代码之家  ›  专栏  ›  技术社区  ›  Silly Freak

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

  •  0
  • Silly Freak  · 技术社区  · 7 年前

    我想在我的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 创建 stm32f40x 从官员那里搬来的板条箱 stm32f401.svd
    • 我用了 cortex-m-quickstart 基本上 hello.rs 示例-配置 memory.x 并将依赖项添加到 STM32F40X型 当然
    • 在我的项目中没有特殊的配置(我可能已经确定),调试和发布版本也会发生同样的行为。
    1 回复  |  直到 7 年前
        1
  •  2
  •   Turbo J    7 年前

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

    检查半宿主文档。上次我检查时,半宿主在几个arm目标上使用断点。

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