Debugowanie w Rubim 1.9


90

Czego używacie do debugowania w Rubim 1.9? Wydaje się, że rdebug nie jest kompatybilny… czy jest tam coś?


10
Zignoruj ​​pierwszą odpowiedź; ruby-debug19jest teraz nieaktualny.
Rob Howard,

Odpowiedzi:


50

Uwaga: ta odpowiedź była poprawna, ale teraz jest nieaktualna. Zobacz poniżej poprawną odpowiedź. TL; DR: użyj teraz „debuggera”.

Ruby-debug jest teraz dostępny w Ruby 1.9.x. Zobacz http://www.github.com/mark-moseley

Aby zainstalować (używając gem w instalacji 1.9 Ruby):

gem install ruby-debug19

(być może z niezbędnym „sudo” przed nim).


Podjąłem pobieżną próbę i nie udało się. Potrzebuję więcej czasu, żeby się temu przyjrzeć.
Mark Moseley

ruby-debug-ide działa teraz - nowy klejnot można zdobyć na cloud.github.com/downloads/mark-moseley/ruby-debug/…
Mark Moseley

To dobra wiadomość! Dziękuję Ci!
andi

niezła robota :) ale czy mógłbyś stworzyć fatgem (zawierający zarówno wersje 1.8 i 1.9 ruby-debug), żebyśmy nie musieli pamiętać o zrobieniu rubydebbug19? :)
horseyguy

4
Nie wydaje się sprawiedliwe, aby głosować w dół tylko dlatego, że upływ czasu sprawił, że teraz jest to zła odpowiedź. SO potrzebuje jakiegoś sposobu radzenia sobie z takimi przypadkami użycia, aby nowa poprawna odpowiedź znalazła się na pierwszej liście, bez karania autorów starszych odpowiedzi, które już nikomu nie są przydatne.
ikonoklast

167

ruby-debug19nie jest już utrzymywany. Wszystkie inne odpowiedzi są nieaktualne.

Ale jest alternatywa:

debugger na pomoc!

Umieść to w swoim Gemfile:

gem 'debugger', group: [:development, :test]

Po prostu działa. - I jest zawarty w szynach Gemfile od 3.2. Coś do wymiany ruby-debug19. Ma dokładnie taką samą funkcjonalność i jest aktywnie utrzymywany.


1
Działa ładnie. Znacznie lepsze niż ręczne instalowanie narzędzia Ruby-debug. Dzięki.
manu_v

5
To naprawdę musi zostać podniesione jako najlepsza odpowiedź.
Matt Zukowski

2
Tak, naprawdę ta odpowiedź musi być najlepszą odpowiedzią.
Nazar Hussain

A co powiesz na to, gdzie to się właściwie znajduje w Gemfile.
Rig

Nie ma znaczenia. Umieść go w dowolnym miejscu, ale nie w bloku grupy (nie w group :development do ... endlub tym podobnym), ponieważ zawiera już grupę.
iblue

70

AKTUALIZACJA DLA RUBY 2.0+ i NASTĘPUJĄCA

byebug to obecnie zalecany debugger dla Ruby 2.0+

Ten problem został udokumentowany tutaj , a cldwalker, autor debuggera, zauważa, że ​​zakres debuggera będzie obejmował Ruby 1.9.2 i 1.9.3.

AKTUALIZACJA 2

Prawdą jest, że ruby-debug nie jest aktywnie obsługiwany, nawet jeśli nie mogę znaleźć niczego, co nie jest już obsługiwane.

Możesz użyć nowego klejnotu debuggera, jeśli potrzebujesz pomocy, aby zacząć od nowego klejnotu, który możesz zobaczyć, rzucając szyny Ryana Batesa .

W swoim Gemfile umieść:

gem 'debugger', group: [:development, :test]

Następnie możesz dodać punkt przerwania w dowolnym miejscu kodu za pomocą debuggersłowa kluczowego.

WCIĄŻ MOŻESZ UŻYWAĆ

linecache19 i ruby-debug-base19 z:

bash <<(curl -L https://raw.github.com/gist/1333785 )

STARE ODPOWIEDZI

Jeszcze tylko dodatek o rvm, ruby ​​1.9.1-p378. Prawda jest taka, że ​​nawet jeśli Ruby-debug jest gotowy w wersji 1.9.x, to linecache-0.43 już nie. Rozwiązaniem jest zainstalowanie:

gem install ruby-debug19

To rozwiązuje problem za mnie.

OLD UPDATE

Jeśli masz problemy z Ruby 1.9.2 i debugowaniem Rails 3, wstaw:

gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"

W swoim Gemfile i robiąc plik

bundle install

Sprawi, że znów będziesz szczęśliwym debugerem.


1
Dzięki, według mnie to była bardziej odpowiednia odpowiedź. Ale może to dlatego, że odpowiedziałeś prawie rok później i sytuacja w tym względzie na dobre się zmieniła.
znak

3

Możesz spróbować kilku rzeczy

1) uruchom go z normalnym debugerem Rubiego -rdebug [1], trochę powolnym

2) uruchom go z unroller gem [trochę śmierdzi, dużo wolno]

3) szybko używaj wielu instrukcji drukowania, mniej introspekcji

4) upuść na znak zachęty irb i uruchom stamtąd jakiś kod.

możesz wyświetlić kod, tworząc własną podpowiedź „drop to irb”, która wyświetlałaby kod wokół siebie [użyj wywołującego, aby odkryć, gdzie jesteś], a następnie przejdź do normalnej zachęty irb.

5) może jruby w trybie kompatybilności 1.9 ma debugger?

[1] http://beaver.net/rdebug/index-0.html


3

Jeśli po zainstalowaniu ruby-debug19 nadal masz problem, spróbuj zaktualizować ruby-debug-base19. Miałem błędy i nie mogłem uruchomić WEBrick w trybie debugowania, dopóki tego nie zrobiłem.

gem update ruby-debug-base19

Aha, i dziękuję panu Moseley za całą twoją ciężką pracę!


2

Zobacz moją odpowiedź tutaj: Ruby-debug nie działa - przepełnienie stosu

Chodzi o to, aby debugowanie Rubiego działało z następującą konfiguracją

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (kompilacja 3.0.8.201201201658)
  • Używając rvm, w katalogu roboczym mojego projektu mam plik .rvmrc stwierdzający:

    rvm use ruby-1.9.3-p0@mygemset
    

Mam nadzieję, że to pomoże!

- Freddy


2

Użyłem następujących i działa dla mnie świetnie:

gem „debugger”, grupa: [: programowanie,: test]

ruby 1.9.3p194 (2012-04-20 wersja 35410) [x86_64-linux] rails 3.2.8


0

Netbeans to dobre środowisko IDE dla RoR. Dobry debugger.


1
Popraw mnie, jeśli się mylę, ale nie wierzę, że debugger działa jeszcze dla Ruby 1.9.1 (implementacja C). Przynajmniej nie udało mi się zmusić go do działania.
JP Richardson

0

Wersja Ruby 1.9.1-p243 jest już niedostępna, a kompatybilny plik ruby-debug-ide również działa poprawnie. Zainstaluj ruby-debug-ide za pomocą następującego polecenia:

gem install ruby-debug-ide

Spowoduje to zainstalowanie klejnotów ruby-debug-base19 i ruby-debug-ide. Ale zanim to nastąpi, upewnij się, że pomyślnie zainstalowałeś mingw, postępując zgodnie z dokumentacją Development kit dostępną w RubyForge .


0

Najnowsze funkcje są dostępne w ruby-debug-ide19 gem.


0

Istnieje wiele możliwości wyboru, w zależności od Twoich potrzeb.

Używam ruchów podważających, ponieważ mogę „spojrzeć wstecz” na to, co wydarzyło się w poprzedniej komendzie, wykonując je ponownie w trybie debugowania bezpośrednio z miejsca.


-1

nikt nie używa: ruby ​​-rdebug script.rb

wtedy możesz użyć: b script.rb: ## (gdzie ## to numer linii prawidłowego polecenia ruby), w przeciwnym razie być może będziesz w środku rubygemów lub jednego z wymaganych fragmentów kodu.

Następnie możesz po prostu ustawić następny punkt przerwania jako b: ##

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.