Skip to content

Commit 046159a

Browse files
committed
Enable "step <n>" while replay
1 parent 5a30073 commit 046159a

File tree

2 files changed

+87
-3
lines changed

2 files changed

+87
-3
lines changed

lib/debug/thread_client.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -831,8 +831,9 @@ def wait_next_action_
831831

832832
case step_type
833833
when :in
834+
iter = iter || 1
834835
if @recorder&.replaying?
835-
@recorder.step_forward
836+
@recorder.step_forward iter
836837
raise SuspendReplay
837838
else
838839
step_tp iter do
@@ -1191,8 +1192,11 @@ def step_back
11911192
@index += 1
11921193
end
11931194

1194-
def step_forward
1195-
@index -= 1
1195+
def step_forward iter
1196+
@index -= iter
1197+
if @index < 0
1198+
@index = 0
1199+
end
11961200
end
11971201

11981202
def step_reset

test/console/record_test.rb

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,4 +167,84 @@ def test_1656237686
167167
end
168168
end
169169
end
170+
171+
class StepIntoWithNumWhileReplayTest < ConsoleTestCase
172+
def program
173+
<<~RUBY
174+
1| def a
175+
2| return b()
176+
3| end
177+
4|
178+
5| def b
179+
6| return 1
180+
7| end
181+
8|
182+
9| a()
183+
10| a()
184+
11| a()
185+
12| a()
186+
13| a()
187+
14| a()
188+
RUBY
189+
end
190+
191+
def test_1663647719
192+
debug_code(program) do
193+
type 'record on'
194+
type 'b 11'
195+
type 'c'
196+
assert_line_num 11
197+
type 'step back'
198+
assert_line_num 11
199+
type 'step back'
200+
assert_line_num 6
201+
type 'step back'
202+
assert_line_num 2
203+
type 'step back'
204+
assert_line_num 10
205+
type 'step 2'
206+
assert_line_num 6
207+
type 'step 2'
208+
assert_line_num 11
209+
type 'q!'
210+
end
211+
end
212+
end
213+
214+
class StepIntoWhenNumberIsLargetThanLogIndex < ConsoleTestCase
215+
def program
216+
<<~RUBY
217+
1| def a
218+
2| return b()
219+
3| end
220+
4|
221+
5| def b
222+
6| return 1
223+
7| end
224+
8|
225+
9| a()
226+
10| a()
227+
11| a()
228+
12| a()
229+
13| a()
230+
14| a()
231+
RUBY
232+
end
233+
234+
def test_1663647719
235+
debug_code(program) do
236+
type 'record on'
237+
type 'b 11'
238+
type 'c'
239+
assert_line_num 11
240+
type 'step back'
241+
assert_line_num 11
242+
type 'step back'
243+
assert_line_num 6
244+
type 'step 100'
245+
assert_line_num 11
246+
type 'q!'
247+
end
248+
end
249+
end
170250
end

0 commit comments

Comments
 (0)