File tree Expand file tree Collapse file tree 2 files changed +36
-7
lines changed
Expand file tree Collapse file tree 2 files changed +36
-7
lines changed Original file line number Diff line number Diff line change @@ -62,15 +62,23 @@ di_body(const rb_debug_inspector_t *dc, void *ptr)
6262 long i ;
6363
6464 for (i = 1 ; i < len ; i ++ ) {
65- VALUE loc , e ;
65+ VALUE e ;
6666 VALUE iseq = rb_debug_inspector_frame_iseq_get (dc , i );
67+ VALUE loc = RARRAY_AREF (locs , i );
68+ VALUE path ;
6769
6870 if (!NIL_P (iseq )) {
69- VALUE path = iseq_realpath (iseq );
70- if (!NIL_P (path ) && !NIL_P (skip_path_prefix ) && str_start_with (path , skip_path_prefix )) continue ;
71+ path = iseq_realpath (iseq );
72+ }
73+ else {
74+ // C frame
75+ path = rb_funcall (loc , rb_intern ("path" ), 0 );
76+ }
77+
78+ if (!NIL_P (path ) && !NIL_P (skip_path_prefix ) && str_start_with (path , skip_path_prefix )) {
79+ continue ;
7180 }
7281
73- loc = RARRAY_AREF (locs , i );
7482 e = di_entry (loc ,
7583 rb_debug_inspector_frame_self_get (dc , i ),
7684 rb_debug_inspector_frame_binding_get (dc , i ),
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ def program
1010 2| b = a + 1 # break
1111 3| end
1212 4| def bar
13- 5| x = 1 # break
13+ 5| x = 1 # break
1414 6| end
1515 7| bar
1616 8| x = 2
@@ -35,7 +35,7 @@ def test_nested_break
3535 type 'p a'
3636 assert_line_text ( /42/ )
3737 type 'c'
38- assert_line_num 7
38+ assert_line_num 7 # because restored `up` line
3939 end
4040
4141 # pop nested break
@@ -48,6 +48,27 @@ def test_nested_break
4848 end
4949 end
5050
51+ def test_nested_break_bt
52+ debug_code program do
53+ type 'break 2'
54+ type 'break 5'
55+ type 'c'
56+
57+ assert_line_num 5
58+ type 'p foo(42)'
59+
60+ if TracePoint . respond_to? :allow_reentry
61+ # nested break
62+ assert_line_num 2
63+ type 'bt'
64+ assert_no_line_text 'thread_client.rb'
65+ type 'c'
66+ end
67+
68+ type 'c'
69+ end
70+ end
71+
5172 def test_multiple_nested_break
5273 debug_code program do
5374 type 'break 2'
@@ -62,7 +83,7 @@ def test_multiple_nested_break
6283 assert_line_num 2
6384 type 'p foo(142)'
6485 type 'bt'
65- assert_line_text ( /\# 9 / ) # TODO: can be changed
86+ assert_line_text ( /\# 7 \s +<main> / ) # TODO: can be changed
6687
6788 type 'c'
6889 assert_line_text ( /143/ )
You can’t perform that action at this time.
0 commit comments