使用VSCode调试STM32 Nucleo

时间:2019-04-12 16:21:50

标签: c++ debugging visual-studio-code stm32 mbed

我最近购买了STMicroelectronics NUCLEO-F446ZE,并且尝试使用Visual Studio代码建立构建和调试环境,并使用mbed Framework进行构建。

我所做的事情:

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

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

  • 我已经使用mbed在线工具建立了一个mbed项目,并下载了该项目供make使用。

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

  • 我已经为Windows安装了USB驱动程序

  • 我已经安装了ST-Link-Server

  • 我已经为cortex debug安装了vscode扩展名

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

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while (1)
    {
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is OFF
        wait(0.2); // 200 ms
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is ON
        wait(1.0); // 1 sec
    }
}

在我完成所有这些工作之后,几乎所有东西都起作用了!我可以构建,可以刷新,甚至可以调试,但是cpp符号似乎不匹配。

我的某些断点根本没有命中,而其他断点则使程序在所需行的上方或下方停了一行。我无法在“监视”面板中读取任何变量,也没有反汇编信息。

Here is a link to a gif同时显示:一个断点被忽略,另一个断点停在错误的行。

如果我按F10键越过一条指令,突出显示的行有时会向后移动。

我真的不知道该如何解决这种令人讨厌的行为。 我认为我在调试笔记本电脑(使用MingW)本地运行的“常规” c ++代码时遇到了类似的问题。因此,也许这与嵌入式开发无关,但是vscode中是否存在一般的c ++问题?

编辑:

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

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

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

0 个答案:

没有答案