Cygwin GDB 和 VSCode

Cygwin GDB and VSCode

尝试通过 Cygwin 版本的 GDB (9.2) 在 VS Code 中调试可执行文件。

可执行文件来自 Free Pascal,Win32-x86。它具有 GDB 兼容的 DWARF 调试符号。 Cygwin下的独立GDB可以打开exe和运行,没问题。我可以在 GDB 上使用 Cygwin/DDD 来处理它,尽管 DDD 有很多问题。

我正在尝试从 Visual Studio 代码中执行相同的操作。 launch.json 是:

{
        "name": "(gdb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "E:\Path\MyProgram.exe",
        "args": ["-x"],
        "stopAtEntry": false,
        "cwd": "E:\Path",
        "environment": [],
        "MIMode": "gdb",
        "miDebuggerPath": "c:\cygwin64\bin\gdb.exe",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    }

当我尝试启动时,终端 window 中的命令行变为:

c:\Users\Seva\.vscode\extensions\ms-vscode.cpptools-1.2.1\debugAdapters\bin\WindowsDebugLauncher.exe' '--stdin=Microsoft-MIEngine-In-w2bqan2m.tt2' '--stdout=Microsoft-MIEngine-Out-nagviahg.1gf' '--stderr=Microsoft-MIEngine-Error-udor1kbz.iot' '--pid=Microsoft-MIEngine-Pid-lhapkzkd.orq' '--dbgExe=c:\cygwin64\bin\gdb.exe' '--interpreter=mi'

但随后左侧窗格上的进度条一直在运行,就好像调试服务器无法启动或无法正确连接一样。程序本身应该 运行 并很快终止;这显然不会发生。

我错过了什么?

后期编辑:PATH 技巧有所帮助,但看起来调试符号加载和解析是在 VSCode 中完成的,而不是由 GDB 完成的。加载 PDB 符号(对于依赖 DLL),不加载 DWARF 符号。嗯,值得一试。

最新版本的 Cygwin GDB 要求 bin 目录位于 PATH

(通常是 c:\cygwin64\bin)

https://sourceware.org/pipermail/cygwin/2021-February/247749.html
https://sourceware.org/pipermail/cygwin/2021-February/247711.html

就我而言,从 gdb 10.2-1 降级到 9.2-1 解决了这个问题。没有别的对我有用。