Skip to content

Commit ae92e94

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

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

lib/debug/session.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1525,8 +1525,13 @@ def add_iseq_breakpoint iseq, **kw
15251525

15261526
def add_tracer tracer
15271527
if @tracers.has_key? tracer.key
1528-
tracer.disable
1529-
@ui.puts "Duplicated tracer: #{tracer}"
1528+
if @tracers[tracer.key].enabled?
1529+
tracer.disable
1530+
@ui.puts "Duplicated tracer: #{tracer}"
1531+
else
1532+
@tracers[tracer.key].enable
1533+
@ui.puts "Enable #{tracer}"
1534+
end
15301535
else
15311536
@tracers[tracer.key] = tracer
15321537
@ui.puts "Enable #{tracer}"

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)