一个二进制文件在断点处停止,另一个没有 - 没有定义断点
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
注意多出来的两行。当我使用 gdb
和 continue
连接时,我通过半主机获得 Hello, World!
打印输出,因此程序原则上执行得很好 - 它只是在 main 之前暂停,即使我没有设置断点.我对两个二进制文件的程序是相同的。可能发生了什么?为什么这两个二进制文件的行为不同?
- 我使用
svd2rust
从官方 stm32f401.svd
创建了一个 stm32f40x
crate
- 我使用了
cortex-m-quickstart
并且基本上使用了 hello.rs
示例 - 配置 memory.x
并将依赖项添加到 stm32f40x
当然
- 我的项目中没有特殊配置(我会识别),并且调试和发布版本会发生相同的行为。
I get the Hello, World! printout through semihosting
查看半主机文档。上次我检查时,半主机在多个 ARM 目标上使用断点工作。
你的 C 程序可能根本没有使用半主机,所以没有使用断点。
我正在尝试 运行 在我的 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
注意多出来的两行。当我使用 gdb
和 continue
连接时,我通过半主机获得 Hello, World!
打印输出,因此程序原则上执行得很好 - 它只是在 main 之前暂停,即使我没有设置断点.我对两个二进制文件的程序是相同的。可能发生了什么?为什么这两个二进制文件的行为不同?
- 我使用
svd2rust
从官方stm32f401.svd
创建了一个 - 我使用了
cortex-m-quickstart
并且基本上使用了hello.rs
示例 - 配置memory.x
并将依赖项添加到stm32f40x
当然 - 我的项目中没有特殊配置(我会识别),并且调试和发布版本会发生相同的行为。
stm32f40x
crate
I get the Hello, World! printout through semihosting
查看半主机文档。上次我检查时,半主机在多个 ARM 目标上使用断点工作。
你的 C 程序可能根本没有使用半主机,所以没有使用断点。