Commit cf469f2
committed
The debug gem can abort when stepping into a rescue clause:
```
$ ruby -Ilib exe/rdbg rescue-test.rb
[1, 7] in rescue-test.rb
=> 1| 1.times do
2| begin
3| raise
4| rescue
5| p 1
6| end
7| end
=>#0 <main> at rescue-test.rb:1
(rdbg) s # step command
[1, 7] in rescue-test.rb
1| 1.times do
2| begin
=> 3| raise
4| rescue
5| p 1
6| end
7| end
=>#0 block in <main> at rescue-test.rb:3
#1 Integer#times at <internal:numeric>:257
# and 1 frames (use `bt' command for all frames)
(rdbg) s # step command
/home/mame/work/debug/lib/debug/thread_client.rb:85:in 'DEBUGGER__::ThreadClient#default_frame_formatter': undefined method '+' for nil (NoMethodError)
"#{colorize_blue("block")}#{args_str} in #{colorize_blue(block_loc + level)}"
^
from /home/mame/work/debug/lib/debug/thread_client.rb:755:in 'Method#call'
from /home/mame/work/debug/lib/debug/thread_client.rb:755:in 'DEBUGGER__::ThreadClient#frame_str'
from /home/mame/work/debug/lib/debug/thread_client.rb:742:in 'block in DEBUGGER__::ThreadClient#show_frames'
from <internal:numeric>:257:in 'Integer#times'
from /home/mame/work/debug/lib/debug/thread_client.rb:739:in 'DEBUGGER__::ThreadClient#show_frames'
from /home/mame/work/debug/lib/debug/thread_client.rb:304:in 'DEBUGGER__::ThreadClient#suspend'
from /home/mame/work/debug/lib/debug/thread_client.rb:358:in 'block in DEBUGGER__::ThreadClient#step_tp'
from rescue-test.rb:5:in 'block in <main>'
from <internal:numeric>:257:in 'Integer#times'
from rescue-test.rb:1:in '<main>'
rescue-test.rb:3:in 'block in <main>': unhandled exception
from <internal:numeric>:257:in 'Integer#times'
from rescue-test.rb:1:in '<main>'
```
This is because `rb_debug_inspector_backtrace_locations` returned a
modified backtrace, which skips rescue/ensure frames, but
`rb_debug_inspector_frame_XXX_get`'s index is considered for a raw
backtrace, which includes rescue/ensure frames.
The problem wil be fixed by ruby/ruby#13510.
However, now the backtrace includes rescue/ensure frames, so some tests
in debug gem fails. This fixes the test failures.1 parent fb1cff5 commit cf469f2
File tree
4 files changed
+31
-4
lines changed- test/console
4 files changed
+31
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | | - | |
50 | | - | |
| 49 | + | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
86 | | - | |
| 86 | + | |
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
| |||
0 commit comments