在VS Code中,C/C++调试器无法启动
我最近更新了VSCode(现在版本为1.112.0),突然发现我的C++项目再也无法启动调试器了。
我有一个launch.json,里面有一个调试配置(之前用起来就像魔法一样顺畅),但按F5时它却保持沉默。
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/projectXY",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build",
"miDebuggerPath": "/usr/bin/gdb"
当我按cmake的调试符号时,它开始构建,但调试器似乎没有被启动:
[main] Building folder: /home/rasmus/Code/C++/projectXY/out/build/projectXY projectXY
[build] Starting build
[proc] Executing command: /usr/bin/cmake --build /home/rasmus/Code/C++/projectXY/out/build/projectXY --target projectXY --
[build] [100%] Built target projectXY
[driver] Build completed: 00:00:00.115
[build] Build finished with exit code 0
[proc] Executing command: /usr/bin/gdb --version
我可以在终端里运行 /usr/bin/gdb,但最后一列让我有点困惑。为什么cmake要调用 /usr/bin/gdb --version?这个命令不会启动调试器。
我刚刚启用了cmake的调试输出,它多给出了一些信息:
[proc] Executing command: /usr/bin/gdb --version
[cache] Reading CMake cache file /home/rasmus/Code/C++/projectXY/out/build/projectXY/CMakeCache.txt
[cache] Parsing CMake cache string
[main] Debug configuration from cache: {"type":"cppdbg","name":"Debug projectXY","request":"launch","cwd":"/home/rasmus/Code/C++/projectXY/out/build/projectXY","args":[],"MIMode":"gdb","miDebuggerPath":"/usr/bin/gdb","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}],"program":"/home/rasmus/Code/C++/projectXY/out/build/projectXY/projectXY"}
[main] Starting debugger with following configuration. {"workspace":"file:///home/rasmus/Code/C%2B%2B/projectXY","config":{"type":"cppdbg","name":"Debug projectXY","request":"launch","cwd":"/home/rasmus/Code/C++/projectXY/out/build/projectXY","args":[],"MIMode":"gdb","miDebuggerPath":"/usr/bin/gdb","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}],"program":"/home/rasmus/Code/C++/projectXY/out/build/projectXY/projectXY","environment":[{"name":"CHROME_DESKTOP","value":"code.desktop"},{"name":"CLUTTER_DISABLE_MIPMAPPED_TEXT","value":"1"},{"name":"DBUS_SESSION_BUS_ADDRESS","value":"unix:path=/run/user/1000/bus"},{"name":"DEBUGINFOD_URLS","value":"https://debuginfod.ubuntu.com "},{"name":"DESKTOP_SESSION","value":"ubuntu"},{"name":"DISPLAY","value":":1"},{"name":"ELECTRON_NO_ATTACH_CONSOLE","value":"1"},...]}}
但这在我看来仍然没问题。那为什么调试器没有启动?
[Edit] 看2-CMakeBuild.log文件时还发现一件事。构建并启动调试器之后(见上文),有一行信息是:
[rollbar] Unhandled exception: Unhandled Promise rejection: debugTarget Canceled: Canceled {}
也许就是元凶;我该如何解决?没有调试器我就束手无策。
解决方案
将VSCode降级到1.110.1版本后,问题就消失了。
来自微软的回应:
这是在较新版本的VSCode(1.111.x/1.112.x)中已知的回归问题,影响:CMake Tools扩展、C/C++调试适配器(cppdbg)调试会话的生命周期。
内部发生的情况是:CMake触发调试会话。VSCode启动调试适配器。调试会话在附加/启动完成之前就被取消。没有UI错误 -> 看起来像“什么都没发生”。这与错误匹配:
debugTarget Canceled。这不是配置问题,也不是启动的问题。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。