1

有一种经过验证的方法可以检测 Cortex-M 上是否连接了调试器,如此处所示

我曾经在调试会话中自动设置断点:

void autobreak() {
  if (CoreDebug->DHCSR & CoreDebug_DHCSR_C_DEBUGEN_Msk)  { 
      __asm__ __volatile__ ("bkpt #0"); 
  } 
}

我在 CLion 中使用 J-Link 和 OpenOCD 进行调试。使用autobreak()时,J-Link 会暂停程序执行,而无需我在调试模式下手动指定断点。但是,在运行模式下,J-Link似乎仍然会停止程序执行,这对我的应用程序来说是不可取的。

让我快速澄清一下每种模式的含义:

  • 运行模式:仅闪存程序
  • 调试模式:Flash 程序然后允许用户暂停程序执行并手动设置断点

有什么方法可以检查 J-Link 是在调试模式还是运行模式下连接?

4

0 回答 0