1

我正在使用 GCC 4.7.4 和 Lauterbach Combiprobe JTAG 调试器开发 STM32F2 设备。在我的代码中,为了测试目的,我有以下语句始终在某个位置中断:

asm volatile ("BKPT #0");

这是唯一的断点。当我运行程序时,我可以看到我的程序到达断点,但我无法使用我的 JTAG 调试器越过这个断点。相反,我必须将 PC 计数器移过这条指令才能执行程序。

这在过去是有效的,但我不知道为什么现在的行为有所不同。任何线索或提示将不胜感激。

4

2 回答 2

1

有很多损坏的 JTAG 调试器。可能您为 JTAG 适配器安装了更新?

当您将 GDB 作为调试器时,您可能会检查是否可以将宏添加set PC=PC+4到按钮或键。但是,这是否可能取决于您的 IDE。

于 2014-03-22T08:28:33.150 回答
1

如果您的应用程序代码中有断点指令,程序计数器会发生什么并没有一般规则。一些 CPU 在包含断点指令的地址处停止,其他 CPU 在断点指令之后停止。

由于您使用标签“lauterbach”,我假设您使用的是来自 Lauterbach 的 TRACE32 调试器。

如果您认为调试器的行为与过去不同,我认为您应该联系劳特巴赫支持。

现在,您可以使用以下 TRACE32 命令解决此问题

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

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

于 2015-04-13T21:38:27.520 回答