使用没有GDB的VS代码调试GNU

时间:2018-02-12 16:31:31

标签: c++ command-line gdb g++ visual-studio-code

周末我通过MSYS2 bash安装了一个gcc。我在VS代码中设置它并使其正常工作。我甚至让GDB工作(是的,我知道这是一个调试器)。但是,我的主要问题是,是否可以使用VS代码中的调试功能来调试而不是GDB。按F5它会拉出launch.json文件并给我launch: program 'enter program name, for example c:\School\a.exe' does not exist。经过一些研究后,我看到你给args一个文件,允许它在调试器中运行。当我这样做时,我似乎无法给它正确的文件或使其整体工作。我还使用a.exe而不是a.out。我不确定这是否有效。

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "enter program name, for example ${workspaceFolder}/a.exe",
            "args": ["C:\\School\\CSE340\\project2\\main.cpp"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:3)

VS Code没有内部调试器(see here)。您需要使用GDB或visual studio调试器(如果您有后者)。

launch.json中,您需要修改条目:

"program":这是您要调试的程序的路径,即您编译的程序(可以是项目文件夹的相对路径)

"miDebuggerPath":这是GDB的路径

"args":这些是参数,您希望传递给您的程序以进行调试,即您可以将其留空

所以你的launch.json文件看起来像这样:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\CSE340\\project2\\main.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe", // Path where your gdb.exe is located
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

${workspaceFolder}是工作区的路径变量,似乎指向C:\\School\\,因此您可能需要修改"program"的值以指向您想要的应用程序调试。您还可以指定程序的绝对路径。

另外,不要忘记使用debug-flags(-g)编译代码,GDB需要这些代码来逐步执行代码。例如: g++ -g main.cpp -o main.exe