Nếu bạn đang sử dụng Ruby 1.9.2+, hãy cài đặt đá quý trình gỡ lỗi (gem install debugger
). Có hai cách để gỡ lỗi: trực tiếp bao gồm đá quý debugger
hoặc sử dụng mã nhị phân redbug
. Giả sử chúng ta có một kịch bản đồ chơi, và chúng ta muốn biết tại sao $blah
là 4 sau khi gọi foo()
(giả vờ là một thư viện bên ngoài).
Phương pháp 1: Bao gồm debugger
này được thiết lập một breakpoint bằng tay trong mã của bạn:
require 'debugger'
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
debugger() # opens rdb
bar()
puts $blah
Run này là ruby debug.rb
. Điều này sẽ khởi động bạn vào một ruby-debug console:
% 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
Cách 2: Chạy rdebug
Dưới đây là ví dụ ví dụ kịch bản của chúng tôi, debug.rb
:
$blah = 3
def foo
$blah += 1
end
def bar
$blah += 4
end
foo()
bar()
puts $blah
Từ vỏ, thực hiện rdebug debug.rb
. Đây là phiên ví dụ:
% 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
Các lệnh chính là break LINE-NUMBER
và display VARIABLE
. Hy vọng rằng sẽ giúp!
Tài
Điều đó có nghĩa là đặt điểm ngắt bằng cách sử dụng 'gdb' hoặc một số trình gỡ lỗi C khác. Sử dụng một Ruby và các phần mở rộng có gỡ lỗi được kích hoạt (tức là được biên dịch bằng '-g') sẽ hữu ích. –
@muistooshort nếu bạn có thể đi vào các bước về cách thực hiện điều này hoặc cung cấp liên kết, tôi nghĩ rằng tôi có thể sẽ trao câu hỏi cho bạn – babonk