Jeśli używasz Ruby 1.9.2+, zainstaluj klej debuggera (gem install debugger
). Istnieją dwa sposoby debugowania: bezpośrednio z klejnotem debugger
lub przy użyciu pliku binarnego redbug
. Udawajmy, że mamy scenariusz z zabawkami i chcemy wiedzieć, dlaczego $blah
jest 4 po wywołaniu foo()
(udawaj, że jest to biblioteka zewnętrzna).
Metoda 1: Włączenie debugger
To jest ustawienie przerwania ręcznie w kodzie:
require 'debugger'
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
debugger() # opens rdb
bar()
puts $blah
Run to jako ruby debug.rb
. Spowoduje to uruchomienie cię do konsoli ruby-debug:
% ruby debug.rb
debug.rb:15
bar()
(rdb:1) list
[10, 19] in debug.rb
10 $blah += 4
11 end
12
13 foo()
14 debugger()
=> 15 bar()
16
17 puts $blah
(rdb:1) display $blah
1: $blah = 4
Metoda 2: Uruchomienie rdebug
Oto nasz przykład przykład skrypt, debug.rb
:
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
bar()
puts $blah
Od powłoki, wykonać rdebug debug.rb
. Oto sesja przykład:
% rdebug debug.rb
(rdb:1) list 1,20
[1, 20] in /mnt/hgfs/src/stackoverflow/debug.rb
=> 1 $blah = 3
2
3 def foo
4 $blah += 1
5 end
6
7 def bar
8 $blah += 4
9 end
10
11 foo()
12 bar()
13
14 puts $blah
(rdb:1) break 12
Breakpoint 1 file /mnt/hgfs/src/stackoverflow/debug.rb, line 12
(rdb:1) display $blah
1: $blah =
(rdb:1) continue
Breakpoint 1 at /mnt/hgfs/src/stackoverflow/debug.rb:12
1: $blah = 4
/mnt/hgfs/src/stackoverflow/debug.rb:12
bar()
(rdb:1) display $blah
2: $blah = 4
klawisze są break LINE-NUMBER
i display VARIABLE
. Mam nadzieję, że pomaga!
Resources
Oznacza to ustawienie punktu przerwania za pomocą 'gdb' lub innego debugera C. Używanie ruby i rozszerzeń z włączonym debugowaniem (np. Skompilowanym za pomocą opcji -g) byłoby pomocne. –
@muistooshort jeśli mógłbyś pójść krok po kroku, jak to zrobić, lub podać link, myślę, że prawdopodobnie odpowiedziałbym ci na to pytanie – babonk