在Visual Studio Code中使用makefile构建的C++代码进行调试

11

我有一个现有的代码库,使用makefile构建,我想使用Visual Studio Code运行它。

我首先用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 Code无法“看到”我的源文件;当我暂停时,它会显示:
 Source /Unknown Source is not available.

我也无法在源代码中设置断点。我发现一些符号得到了加载,因为当我暂停执行时,我可以在调用堆栈上看到我的函数名称。
那我错过了什么?我是否绝对必须像这里所说的那样(http://code.visualstudio.com/docs/languages/cpp)创建一个g ++任务,在其中手动输入所有包含路径和链接器输入?使用makefile的初衷是为了不必进行这些繁琐的操作...
非常感谢任何知道如何处理VS代码的人。

我觉得我们需要看一下Makefile才能知道问题到底是什么。 - undefined
2个回答

1

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

您确定在您的makefile中设置了-g选项吗?

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

希望这可以帮助您!


1
在Windows平台上,使用C/C++扩展时,编译可执行文件需要使用Mingw、gdb和-g参数。在launch.json中不需要使用"preLaunchTask": "bash"。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接