Debugging GDB中断命令don';无法在命令文件中执行
我有一个调试脚本,可以执行以下操作:Debugging GDB中断命令don';无法在命令文件中执行,debugging,gdb,riscv,openocd,segger-jlink,Debugging,Gdb,Riscv,Openocd,Segger Jlink,我有一个调试脚本,可以执行以下操作: 设置两个断点。让我们称之为开始和结束断点 启动后,脚本将继续运行,直到到达start断点 一旦命中开始断点,我将执行单步执行,直到命中结束断点 这是我的命令文件: # end breakpoint break 38 commands stop 1 quit end # start breakpoint break 50 commands set logging off set logging file log.txt
# 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
不向控制台或日志文件打印任何内容。但是,当我将相同的break命令直接写入控制台并手动执行步骤时,它就可以工作了
我正在使用JLink调试器和openOCD调试带有RISC-V的vegon
更新:
我发现问题在某种程度上在于循环中有下一个。因此,每当我摆脱循环并简单地硬编码下一个命令的数量时,break命令就会成功执行
这种行为仍然很奇怪,我希望有人能对此做出解释。请参见和此。当我使用“finish”时,该函数对我有效。“钩子柱”帮助我们完成了下一步。看这个。当我使用“finish”时,该函数对我有效。“钩针”帮助我们完成了下一步。
++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