Visual Studio 2019调试嵌入式目标如何强制VS不将其视为Windows可执行文件

问题描述

我正在尝试在VS 2019中设置Cmake ARM uC(STM32)嵌入式项目。

项目正常,但是我很难启动调试会话。

我修改了launch.vs.json

{
  "version": "0.2.1","defaults": {},"configurations": [
    {
      "type": "cppdbg","name": "GCEC-FW.elf","project": "out\\build\\IoT-Debug\\GCEC-FW.elf","projectTarget": "","cwd": "${workspaceRoot}","program": "${workspaceRoot}\\BUILD\\${workspaceRootFolderName}.elf","MIMode": "gdb","externalConsole": true,"inheritEnvironments": [
        "gcc_arm"
      ],"miDebuggerPath": "${env.gccpath}\\bin\\arm-none-eabi-gdb.exe","setupCommands": [
        {
          "text": "-environment-cd ${workspaceRoot}/BUILD"
        },{
          "text": "-file-exec-and-symbols ${workspaceRootFolderName}.elf","description": "load file","ignoreFailures": false
        },{
          "text": "-enable-pretty-printing","ignoreFailures": true
        }
      ],"visualizerFile": "${debugInfo.linuxNatvisPath}","showDisplayString": true,"miDebuggerServerAddress": "localhost:3333","launchCompleteCommand": "None","debugServerPath": "C:\\Program Files (x86)\Atollic\\TrueSTUDIO for STM32 9.3.0\\Servers\\J-Link_gdbserver\\JLinkGDBServerCL.exe","debugServerArgs":  "-port 2331 -s -CPU Cortex-M -device STM32F427II -endian little -speed 4000 -vd -swoport 2332","serverStarted": "GDB\\ server\\ started","filterStderr": true,"filterStdout": true
    }
  ]
}

但是,当我尝试启动调试会话时,出现错误,指出我的.elf文件不是Win32可执行文件(实际上是正确的-不是)。

enter image description here

问题是:VS要开始此会话需要做什么?

编辑

添加新的微控制器调试配置时,我需要更改名称。 “名称”:“ GCEC-FW.elf”

现在,它抱怨到gdb的路径。

新问题是:我可以在VisualStudio中输出还是查看构建变量-如 ${workspaceRootFolderName}${env.gccpath}

解决方法

关于“ ...我是否可以在Visual Studio中输出或查看构建变量-如: ${workspaceRootFolderName} or ${env.gccpath}

要在属性中显示所有当前可用的宏 页面对话框,在VC ++目录下,选择位于以下位置的下拉箭头 属性行的末尾。单击编辑,然后在编辑对话框中 框,选择宏按钮。当前的属性集和 列出了Visual Studio可见的宏以及当前值 每个。有关更多信息,请参见指定用户定义的值。 C ++项目属性页参考部分。

enter image description here

More here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...