STM32调试器在遇到断点后继续运行
STM32 debugger continues to run after hitting a breakpoint
我是 运行 带有 Atollic Truestudio 7.0.1(基于 Eclipse)的 STM32L151 微控制器。通过 GDB 使用 ST-Link/V2 调试器连接到 MCU。
最近,尽管我没有更改项目配置中的任何内容,但我注意到调试器存在问题。当执行在断点处暂停时,我可以检查变量,但目标显然仍然是 运行,即使 IDE 指示调试器是 "Suspended"。这使得单步调试变得不可能,因为程序计数器只是跳转到当前所在的位置,而不是下一行代码。
看起来目标实际上可能在命中断点后几秒重置。
关于导致此问题的原因以及我可能如何解决它的任何想法?
It looks like the target might actually be resetting a few seconds
after the breakpoint is hit.
那么当核心停止时,它可能仍然是 运行 的看门狗之一。只要调试器使用
停止核心,您就可以让它们停止
DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_WWDG_STOP
或
DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_IWDG_STOP
以适当者为准。
我是 运行 带有 Atollic Truestudio 7.0.1(基于 Eclipse)的 STM32L151 微控制器。通过 GDB 使用 ST-Link/V2 调试器连接到 MCU。
最近,尽管我没有更改项目配置中的任何内容,但我注意到调试器存在问题。当执行在断点处暂停时,我可以检查变量,但目标显然仍然是 运行,即使 IDE 指示调试器是 "Suspended"。这使得单步调试变得不可能,因为程序计数器只是跳转到当前所在的位置,而不是下一行代码。
看起来目标实际上可能在命中断点后几秒重置。
关于导致此问题的原因以及我可能如何解决它的任何想法?
It looks like the target might actually be resetting a few seconds after the breakpoint is hit.
那么当核心停止时,它可能仍然是 运行 的看门狗之一。只要调试器使用
停止核心,您就可以让它们停止DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_WWDG_STOP
或
DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_IWDG_STOP
以适当者为准。