Skip to content

Commit 7a4972a

Browse files
committed
Fix bug that "trace line" does not work after stopping trace once
1 parent 733dd4b commit 7a4972a

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

lib/debug/session.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1524,7 +1524,7 @@ def add_iseq_breakpoint iseq, **kw
15241524
# tracers
15251525

15261526
def add_tracer tracer
1527-
if @tracers.has_key? tracer.key
1527+
if @tracers[tracer.key]&.enabled?
15281528
tracer.disable
15291529
@ui.puts "Duplicated tracer: #{tracer}"
15301530
else

lib/debug/tracer.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ def disable
5454
@tracer.disable
5555
end
5656

57+
def enabled?
58+
@tracer.enabled?
59+
end
60+
5761
def description
5862
nil
5963
end

test/console/trace_test.rb

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,5 +532,31 @@ def test_tracer_prints_correct_method_receiving_messages
532532
end
533533
end
534534
end
535+
536+
class TraceOnAfterStoppingOnceTest < ConsoleTestCase
537+
def program
538+
<<~RUBY
539+
1| a=1
540+
2|
541+
3| b=1
542+
4|
543+
5| c=1
544+
6| p a
545+
RUBY
546+
end
547+
548+
def test_1656237686
549+
debug_code(program) do
550+
type 'trace line'
551+
type 'trace off'
552+
type 'trace line'
553+
type 'b 5'
554+
type 'c'
555+
assert_line_num 5
556+
assert_line_text(/DEBUGGER \(trace\/line\)/)
557+
type 'kill!'
558+
end
559+
end
560+
end
535561
end
536562
end

0 commit comments

Comments
 (0)