我将 gdb 与远程目标一起使用
target extended-remote localhost:3333
cd project
file build/project.elf
monitor reset halt
load
print $pc
这工作正常,$pc 指向 Reset_Handler
但是启动然后中断程序后,我重置了目标
monitor reset halt
print $pc
monitor reg pc
现在 $pc 仍然显示我中断程序的地址,而不是 Reset_Handler。
但
monitor reg pc
显示了正确的地址(Reset_Handler)。
使用 next
之后,gdb 更新 $pc 并再次显示正确的值。
问题似乎是,gdb 在执行
monitor
命令后不会更新寄存器。
如果我重新连接到目标,这些值就会更新
target extended-remote localhost:3333
print $pc
monitor reg pc
但这似乎有点矫枉过正,可能会有副作用。
是否有任何简单的命令或技巧可以重新刷新寄存器的正确值?
Google 对于这个问题完全没用(我浪费了两天),但是 chat-GPT 立刻给了我正确的答案(我太老了,无法适应这个新东西)。
maintenance flush register-cache