在Visual Studio中调试使用makefile构建的C++代码
问题描述:
我有一个现成的代码库,它使用makefile生成,我想使用Visual Studio代码运行它。在Visual Studio中调试使用makefile构建的C++代码
我开始用Visual Studio Code打开我的项目目录。 然后,对于建筑我创建了一个任务按http://code.visualstudio.com/docs/languages/cpp:
{
"version": "0.1.0",
"command": "bash",
"isShellCommand": true,
"args":["-c", "cd build && make"]
}
工作正常。然后我下载了C++的扩展,创造了launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "x64",
"program": "${workspaceRoot}/build/myProgram",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"linux": {
"MIMode": "gdb"
},
"osx": {
"MIMode": "lldb"
},
"windows": {
"MIMode": "gdb"
}
},
// attach here, which I don't care about
]
}
此次发布的文件允许我使用内置的调试器,开始我的计划。我知道它的作用,因为我看到所有的符号文件被加载,我可以暂停程序。
但是,VS代码不会“看到”我的源文件;当我暂停说
Source /Unknown Source is not available.
我也不能在源中设置断点。我看到一些符号被加载,但我可以在暂停执行时在调用堆栈上看到我的函数名称。
那么我错过了什么?我是否必须这样做(http://code.visualstudio.com/docs/languages/cpp),然后做一个g ++任务,我必须手动输入所有包含路径和链接器输入?首先使用makefile的目的是不必做这些繁琐的事情...
非常感谢任何知道如何处理VS代码的人。
答
您应该能够通过仅使用tasks.json
和launch.json
进行调试。
您确定您的生成文件中设置了-g
选项吗?
另一件事 - 您可以通过将 "preLaunchTask": "bash"
添加到您的launch.json
启动时执行您的任务。
希望这会有所帮助!
答
在窗户; Mingw
,gdb
和-g
编译可执行文件时的参数对于c/C++扩展是必需的。在launch.json
中不需要"preLaunchTask": "bash"
。