debugging 程序集代码断点未按预期工作

wsewodh2  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(143)

我正在使用GCC 4.7.4和劳特巴赫Combiprobe JTAG调试器开发STM32F2器件。在我的代码中,我有以下语句总是在某个特定的位置中断,以用于测试目的:

asm volatile ("BKPT #0");

字符串
这是唯一的断点。当我运行程序时,我可以看到我的程序到达了断点,但是我不能使用JTAG调试器越过这个断点。相反,我必须将PC计数器移过此指令以使程序执行。
这在过去是有效的,但我不知道为什么现在的行为不同了。任何线索或提示将不胜感激。

frebpwbc

frebpwbc1#

有很多坏掉的JTAG调试器。您可能安装了JTAG适配器的更新?
当你使用GDB作为调试器时,你可以检查是否可以将宏set PC=PC+4添加到按钮或按键上。但如果这是可能的取决于您的IDE。

uhry853o

uhry853o2#

如果在应用程序代码中有断点指令,程序计数器会发生什么并没有通用规则。一些CPU在包含断点指令的地址处停止,其他CPU在断点指令之后停止。
由于您使用了标记“劳特巴赫”,我假设您使用的是Lauterbach的TRACE32调试器。
如果您认为调试器的行为与过去不同,我认为您应该联系劳特巴赫支持。
现在,您可以使用以下TRACE32命令解决此问题

Break.Set T:0x1000 /Program /CMD "Register.Set PP r(PP)+2"

字符串
(其中0x1000代表BKPT指令所在的地址。)

相关问题