C++ 用VSCode调试STM32核子

C++ 用VSCode调试STM32核子,c++,debugging,visual-studio-code,stm32,mbed,C++,Debugging,Visual Studio Code,Stm32,Mbed,我最近买了一个,我正在尝试使用VisualStudio代码和make with建立一个构建和调试环境 我所做的事情: 我已经为Windows中的make设置了MSYS 我已经下载了gcc avr ONE eabi工具链 我已经用mbed在线工具建立了一个mbed项目,并将其下载到make中使用 我已更新主板上的ST Link固件 我已经安装了windows的USB驱动程序 我已经安装了ST-Link服务器 我已经安装了vscode的扩展 这是我尝试调试的简单代码(对于测试,它工作得很好) 在

我最近买了一个,我正在尝试使用VisualStudio代码和make with建立一个构建和调试环境

我所做的事情:

  • 我已经为Windows中的make设置了MSYS

  • 我已经下载了gcc avr ONE eabi工具链

  • 我已经用mbed在线工具建立了一个mbed项目,并将其下载到make中使用

  • 我已更新主板上的ST Link固件

  • 我已经安装了windows的USB驱动程序

  • 我已经安装了ST-Link服务器

  • 我已经安装了vscode的扩展

这是我尝试调试的简单代码(对于测试,它工作得很好)

在我做了所有这些之后,几乎所有的事情都成功了!我可以构建、闪存甚至调试,但cpp符号似乎不匹配

我的一些断点根本没有命中,而另一些断点则在目标行上方或下方停止一行。我无法读取“监视”面板中的任何变量,并且没有反汇编信息

这显示了两种情况:一个断点被忽略,另一个断点停在错误的行上

此外,如果我按F10跳过指令,高亮显示的行有时会向后移动

我真的不知道如何纠正这种恼人的行为。 我认为在我的笔记本电脑上(MingW)上调试“规则”C++代码时,我也遇到了类似的问题。也许这与嵌入式开发无关,但在VSCODE?C++中是一个通用的C++问题吗? 编辑:

当执行在错误的行中停止时,调试控制台实际上会说:

Breakpoint 1, main () at ../main.cpp:12
12          wait(0.2); // 200 ms

但我在编辑器的第11行设置了断点,而不是第12行:(

将优化级别更改为零。然后它将在您想要的地方停止。否则,并非所有核心行都明确显示(以您在源代码中看到的形式)在汇编中executable@P__J__谢谢,这里C++的实际NoOB…GCC或G+或连接过程中的优化级别?还是完全不同的东西?GCC和G+有相同的选项。@ Pyjjy.谢谢我的一个朋友帮助我。o我可以在调试期间看到变量中的内容。感谢您的帮助!实际上g更好。但它与变量无关。变量可以优化。将优化级别更改为零。然后它将在您想要的地方停止。否则,并非所有核心行都显式显示(以您在源代码中看到的形式)在汇编中executable@P__J__谢谢,这里C++的实际NoOB…GCC或G+或连接过程中的优化级别?还是完全不同的东西?GCC和G+有相同的选项。@ Pyjjy.谢谢我的一个朋友帮助我。o我可以在调试过程中看到变量内部的内容。感谢您的帮助!实际上g更好。但它与变量无关。可以优化变量。
Breakpoint 1, main () at ../main.cpp:12
12          wait(0.2); // 200 ms