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 解决了这个问题。没有别的对我有用。
尝试通过 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 解决了这个问题。没有别的对我有用。