Jak debugować?

Jak debugować programy w czystym Rubym (bez Railsów)? Wiem, że są jakieś biblioteki działające w konsoli (ruby-debug). Ale jak uruchomić to debugowanie po tym, jak wstawimy komendy debuggera w kodzie?

według mnie pierwszym krokiem w debugowaniu jest pisanie testów jednostkowych, jeśli tego nie robisz to zacznij

irb + testy + Object#inspect == nie potrzeba debuggera :slight_smile:

Jeśli mówicie poważnie, to pasuje tutaj tylko “O lol O_o !!!”
Może przy standardowej aplikacji RoR to wystarczy, ale ja programuję algorytm, którego nie jestem pewien i mi te prymitywne metody nie wystarczają.
Człowiek przyzwyczajony do Javy, rozumiecie…

To może warto przy Javie pozostać ( albo się odzwyczaić ) ?

Z czym konretnie w ruby-debug masz problem bo to jak uruchomić debugger po wstawieniu komend wyjaśnia ten tutorial (1 wynik wyszukiwania w Google frazy “ruby debug tutorial” ) :

ruby-debug tutorial

Samo ruby-debug mi się nie chce ładować.

require 'ruby-debug'

wywala mi:

[quote]E:/Program Files/Ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/ruby-debug-base-0.10.3-x86-mswin32/lib/ruby-debug-base.rb:1:in `require’: 126: Nie można odnaleźć określonego modułu.

  • E:/Program Files/Ruby/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/ruby-debug-base-0.10.3-x86-mswin32/lib/ruby_debug.so (LoadError)[/quote]

Jeśli dobrze kojarzę, to gem ruby-debug nie jest kompatybilny z Ruby 1.9 (przynajmniej nie był kompatybilny ostatnim razem, gdy potrzebowałem go użyć). Jeśli nie dasz rady się bez niego obejść, to przesiądź się na Ruby 1.8.

[quote=Crane]Jeśli mówicie poważnie, to pasuje tutaj tylko “O lol O_o !!!”
Może przy standardowej aplikacji RoR to wystarczy, ale ja programuję algorytm, którego nie jestem pewien i mi te prymitywne metody nie wystarczają.
Człowiek przyzwyczajony do Javy, rozumiecie…[/quote]
To nie loluj, jeśli nie rozumiesz nowoczesnych idei (testy jednostkowe) i możliwości nowoczesnych języków (refleksja, introspekcja, dynamizm) powszechnych w świecie Ruby.
Prymitywne to jest właśnie używanie debugera – breakpointy, step-by-step run, step-in i step-out są tak bardzo 1990 :wink:

Radziłbym nie uważać się za wiedzącego lepiej na tym form, bo jeszcze możesz (z bardzo dużym prawdopodobieństwem) trafić na osobę mającą więcej doświadczenia w językach niższego (od Ruby) poziomu – włączając w to C i Javę – i która wdepcze Cię w podłogę (obnażając mizerność Twojej wiedzy i umiejętności) przy kolejnym lolowaniu.

Natomiast trochę rozumiem Twój problem, bo sam jestem w podobnej sytuacji – moja magisterka też jest wokół algorytmu (napisana w javie symulacja numeryczna). Też byłem przyzwyczajony do używania debugera (używanie tego w Eclipse potrafi być wręcz przyjemne… chwilami :wink: ), póki nie przeniosłem doświadczeń nabytych w Ruby i nie zacząłem pokrywać symulacji testami. A nieśmiało zauważę, że skonstruowanie test-case’u z silnymi asercjami w przypadku algorytmów stochastycznych jest zadaniem niebanalnym.

Serio, napisz testy :slight_smile:
Będziesz miał to co w debugerze (introspekcja, ziarnistość do poziomu konkretnej linii kodu), a na dodatek odtwarzalne i zautomatyzowane.

Jest już ruby-debug dla 1.9

Temat jest dość stary, ale jak dla mnie aktualny. Jeśli ktoś jest przyzwyczajony do graficznych debuggerów to można użyć IDE RubyMine, jednak nie jest to darmowe. Swój kod Ruby można też wrzucić w pythontutor.com gdzie można go wykonywać krok po kroku, z GUI i podglądem w wartości (można nawet zrobić krok wstecz :wink:)

Proponuje użyć któregoś z gemów: pry lub byebug