我有一个调试脚本,它执行以下操作:
- 设置两个断点。让我们称呼他们吧start and end断点。
- 启动后,脚本将继续执行,直到start命中断点。
- once start命中断点,我执行单步执行,直到end命中断点。
这是我的命令文件:
# 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
控制台或日志文件中不会打印任何内容。但是,当我直接将相同的中断命令写入控制台并手动执行步骤时,它会起作用。
我正在使用 JLink 调试器和 openOCD 调试带有 RISC-V 的 VEGAboard。
Update:
我发现问题出在循环中的 next 上。因此,每当我摆脱循环并简单地对数量进行硬编码时next命令,break命令成功执行。
这种行为仍然很奇怪,我希望有人能给出解释。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)