一个二进制文件在断点处停止,另一个没有 - 没有定义断点

One binary halts at breakpoint, the other doesn't - no breakpoint is defined

我正在尝试 运行 在我的 STM32F401xB 上创建一个 Rust Hello World。我有一个用于比较的工作 C 程序(不同的功能,但它验证了闪存工具链)并使用相同的 openocd 命令将两个程序闪存到控制器上。

当我刷写 C 程序时,我得到:

...
** Verified OK **
adapter speed: 2002 kHz

当我刷新 Rust 程序时,我得到以下信息:

...
** Verified OK **
adapter speed: 2002 kHz
target halted due to breakpoint, current mode: Thread
xPSR: 0x21000000 pc: 0x08002f42 msp: 0x2000ffa0

注意多出来的两行。当我使用 gdbcontinue 连接时,我通过半主机获得 Hello, World! 打印输出,因此程序原则上执行得很好 - 它只是在 main 之前暂停,即使我没有设置断点.我对两个二进制文件的程序是相同的。可能发生了什么?为什么这两个二进制文件的行为不同?


I get the Hello, World! printout through semihosting

查看半主机文档。上次我检查时,半主机在多个 ARM 目标上使用断点工作。

你的 C 程序可能根本没有使用半主机,所以没有使用断点。