首页 文章

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

提问于
浏览
0

我正在尝试在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之前暂停,即使我没有设置断点 . 我对两个二进制文件的过程是一样的 . 会发生什么事?为什么两个二进制文件的行为不同?


  • 我用 svd2rust 从官方 stm32f401.svd 创建一个 stm32f40x 箱子

  • 我使用了 cortex-m-quickstart ,基本上是 hello.rs 示例 - 配置 memory.x 并将依赖项添加到 stm32f40x 当然

  • 我的项目中没有特殊配置(我已经确定),调试和发布版本也会出现相同的行为 .

1 回答

  • 2

    我得到你好,世界!通过半主机打印输出

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

    您的C程序可能根本不使用半主机,因此不使用断点 .

相关问题