2016-08-19 357 views
1

我有一个现成的代码库,它使用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代码的人。

回答

0

您应该能够通过仅使用tasks.jsonlaunch.json进行调试。

您确定您的生成文件中设置了-g选项吗?

另一件事 - 您可以通过将 "preLaunchTask": "bash"添加到您的launch.json启动时执行您的任务。

希望这会有所帮助!

0

在窗户; Mingw,gdb-g编译可执行文件时的参数对于c/C++扩展是必需的。在launch.json中不需要"preLaunchTask": "bash"

相关问题