我有一个执行以下操作的调试脚本:
这是我的命令文件:
# end breakpoint
break 38
commands
stop 1
quit
end
# start breakpoint
break 50
commands
set logging off
set logging file log.txt
set logging overwrite on
set logging on
printf "program counter: $pc"
end
continue
set $count = 0
set $steps = 15
while $count < $steps
set $count = $count + 1
next
end
澄清一下,一旦我开始调试会话,程序就会在 main 的开头停止;这就是为什么脚本中有 continue 跳转到 start 断点的原因。
问题在于,无论何时击中断点,都不会执行break命令。这是我在控制台中得到的:
++next
Breakpoint 23, main () at ..\..\hello_world.c:50
50 test_byte++;
++set $count = $count + 1
++next
51 test_byte++;
++set $count = $count + 1
++next
什么都不会打印到控制台或日志文件。但是,当我将相同的break命令直接写到控制台并手动执行时,它会起作用。
我正在使用JLink调试器和openOCD使用RISC-V调试VEGAboard。
更新:
我认为问题在于循环中的下一个。因此,只要我摆脱循环并简单地对 next 命令的数量进行硬编码,break命令就会成功执行。
这种行为仍然很奇怪,我希望有人能解释一下。