【问题标题】:How to debug C++ with MSYS2 (MSYS64) gdb.exe on VSCode?如何在 VSCode 上使用 MSYS2 (MSYS64) gdb.exe 调试 C++?
【发布时间】:2017-08-07 22:07:36
【问题描述】:

我无法让 C++ (GDB) 调试器工作。 到目前为止,我已经安装了扩展:

MSYS2 已经在 Windows PATH 中,我可以从 PowerShell 调用 gdb.exe:

Start("gdb.exe")

在我第一次尝试时,我收到一条消息,指出 crtexe.c 不存在。我选择创建它的选项。文件路径在C:\repo\mingw-w64-crt-git\src\mingw-w64\mingw-w64-crt\crt\crtexe.c,我已经从source复制了它的内容。

程序编译正常。而且,当按下 F5 时,调试器会跳转到 crtexe.c 并在几个 F11 步骤后停止。我真的被困在这一点上,任何帮助都将不胜感激!

这是我的 c_cpp_properties.json

{
    "configurations": [{
            "name": "Mac",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceRoot}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        },
        {
            "name": "Linux",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceRoot}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        },
        {
            "name": "Win32",
            "includePath": [
                "C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/7.1.0/include",
                "C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed",
                "C:/msys64/mingw64/include/c++/7.1.0/x86_64-w64-mingw32",
                "C:/msys64/mingw64/x86_64-w64-mingw32/include",
                "C:/msys64/mingw64/x86_64-w64-mingw32/include/wrl",
                "C:/msys64/mingw64/include/c++/7.1.0/tr1",
                "C:/msys64/mingw64/include/c++/7.1.0/backward",
                "C:/msys64/mingw64/include/c++/7.1.0",
                "C:/msys64/mingw64/include",
                "${workspaceRoot}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=7.1.0",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/7.1.0/include",
                    "C:/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/7.1.0/include-fixed",
                    "C:/msys64/mingw64/include/c++/7.1.0/x86_64-w64-mingw32",
                    "C:/msys64/mingw64/x86_64-w64-mingw32/include",
                    "C:/msys64/mingw64/x86_64-w64-mingw32/include/wrl",
                    "C:/msys64/mingw64/include/c++/7.1.0/tr1",
                    "C:/msys64/mingw64/include/c++/7.1.0/backward",
                    "C:/msys64/mingw64/include/c++/7.1.0",
                    "C:/msys64/mingw64/include",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 2
}

而且,我的 launch.json 是这样的:

{
    "version": "0.2.0",
    "configurations": [{
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceRoot}/main.exe",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceRoot}",
        "environment": [],
        "externalConsole": true,
        "MIMode": "gdb",
        "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
        "setupCommands": [{
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
        }]
    }]
}

【问题讨论】:

    标签: c++ debugging visual-studio-code


    【解决方案1】:

    只是编辑 workspace settings.json 的问题,如下所示。这样,使用-g选项,编译器在程序上插入调试符号,调试器就可以正常工作了。

    {
        "code-runner.executorMap": {
            "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -g && $dir$fileNameWithoutExt"
        }
    }

    问题显然解决了!

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 1970-01-01
      • 2020-07-13
      • 2023-02-26
      • 1970-01-01
      • 2021-10-28
      • 2012-06-18
      • 2015-12-29
      • 2022-08-19
      相关资源
      最近更新 更多