2011-12-17 16 views
30

Bir yakut geminin içinde bir çok Hayalet Metodu var olabileceğinden, bir ruby ​​geminin iç mekanizmasını incelemek iyi bir fikir değil. Kaynak kodunu statik olarak okuma. Ayırma noktasını ayarlayabilmem ve işlerin dinamik olarak nasıl çalıştığını görebilmem için, hata ayıklama amacıyla üçüncü bir parçanın kaynak dosyasını hata ayıklamak için kullanmanın bir yolu var mı?
BTW, "require" ifadesinin "Go To-> Implementations" içerik menüsüne veya üçüncü taraf bir geminin diğer sembolüne tıklayarak RubyMine'de üçüncü taraf bir geminin kaynak dosyasına gitmeyi denedim Başarı olmadan, (require 'watir'). Ruby gibi bir dinamik yazım dilinin bir IDE'sinin bir sembol navigasyonu başarısız olması normal midir?Ruby'de üçüncü şahısların hatalarını ayıklamanın en iyi yolu

Ruby gibi, çalışma zamanında kodunu değiştirmek dillerde

cevap

37

Bunu yapmak için daha iyi bir yolu olup olmadığını bilmek isterdim, ama ne kadar genellikle yapın:

  1. sizin Gemfile için yakut-ayıklama mücevher ekleyin (ya da eğer yakut-debug19 Ruby 1.9.2)
  2. bundle show gemname yaparak Gemiyi bulun. Mac'tayım, bu yüzden bunu genelde pbcopy'a pipettim, böylece panoya kopyalanır. bundle show rails | pbcopy
  3. Favori dizininizde mücevher dizini açın. mvim /path/to/gem/directory
  4. Kesme noktasını koymak istediğiniz dosyaya ve çizgiye gidin * ve söz konusu satırın üstüne debugger ekleyin.
  5. sayfayı yenileyin, koşma testi veya ne yaparsak sen Gem dosya yürütme ayıklayıcıya durduğunda
  6. , siz (p variable_name) değişkenleri inceleyin olabilir yürütmek için almak istiyorsunuz ve hareket hattı ruby debugger commands ile çizgiyle.
kod bazı anlayış alabilir kesme noktası koymak için bilerek

*, ancak

+3

teşekkürler. Bu harika çalışıyor. FWIW, bu talimatları [Pry] (https: // rubygems) ile kullandım.Ruby-debug yerine org/gems/pry) ve aynı zamanda çalıştı. –

+1

Aynı Gemiyi kullanıyorlarsa, aynı makinedeki diğer uygulamaları kesintiye uğratır mı? – flyingL123

+0

@ flyingL123, Uygulamanız olarak hata ayıklama modunda çalışırlarsa, diğerlerini kesintiye uğratacağını varsayalım. – parzival

0

, doğru 100% semboller, yöntem vb kökenlerini tahmin etmek zordur

Ben kaynak kodu analiz gerekiyor üçüncü şahıs taşlar bir sürü başa ve Bu görev için en iyi aracın Netbeas + 'ın Ruby ve Rails eklentileri olduğunu buldum.

  • aslında bazı hatalar vardır

** ** (iz ve tüm) çalışmak (diğer alternatiflere aksine) bağımlı taşlar kaynak kodunda iyi navigasyon

  • görsel kesme noktaları ve hata ayıklamaya izin verir Verili kod bloklarında (her bir {} gibi) yöntem çağrıları ile ancak bu

    ile uğraşmayı öğrendim. Genellikle yaptığım şey kesme noktalarını belirleyip kodu çalışma zamanında analiz etmektir.

  • 9

    Şu anda kabul edilen yanıt önerildiği üzere Gem dosyalarını düzenleme önleyeceğini lib/gemname.rb başlamalıdır. Bunun yerine, uygulama dosyalarınızdan birine debugger komutunu koyun ve mücevherde bir kesme noktası belirlemek için break komutunu kullanın. Ben işte bir gemset ile rvm kullanıyorum ben böyle yaparız:

    break /Users/chris/.rvm/gems/[email protected]<gemset>/gems/<gem_name>-<gem-version>/<path_to_file>:<line_number>

    +0

    Kabul edilen cevap, aynı Gem'i kullanıyorlarsa aynı makinedeki diğer uygulamalarla etkileşime girer mi? Eğer öyleyse, bu çözüm bu problemden kaçınacak gibi görünüyor. – flyingL123

    +2

    Evet. Bütün nokta bu. Seçeneklerin dışında sürece, onları çatal istekli sürece Gem dosyaları tüm ücret ödemeden kaçınmak istiyorum –

    İlgili konular