GDB 无法使用 VS Code 调试正在运行的进程,但可以通过命令行

use*_*848 8 c++ gcc gdb visual-studio-code

我正在尝试在 Windows 上调试由 python 脚本启动的 C++ 应用程序。我可以从命令行使用 GDB 附加到进程,并且一切正常。

但是,当尝试使用 VS Code 附加 GDB 时,它管理附加,但所有断点都被卡住Attempting to bind to the breakpoint...并尝试在调试控制台中执行命令返回Unable to perform this action because the process is running..

这是我的 launch.json 配置:

{ 
        "name": "(gdb) Attach",
        "type": "cppdbg",
        "request": "attach",
        "program": "${workspaceFolder}\\build\\program.exe",
        "processId": "${command:pickProcess}",
        "MIMode": "gdb",
        "miDebuggerPath": "C:\\Program Files (x86)\\mingw-w64\\i686-8.1.0-posix-dwarf-rt_v6-rev0\\mingw32\\bin\\gdb.exe",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

我认为 VS 代码在启动 GDB 时做了一些额外/奇怪的事情,有没有办法解决这个问题?

ks1*_*322 -2

MinGW 上的 GDB 有一些限制

Cygwin 和 MinGW 上的 GDB 无法中断正在运行的进程。要在应用程序运行时(不在调试器下停止)设置断点,或暂停正在调试的应用程序,请在应用程序的终端中按 Ctrl-C。

在 VS Code 中设置断点之前,请确保使用Ctrl-停止应用程序C。另请参阅相关问题:https ://github.com/Microsoft/vscode-cpptools/issues/595 。