VSCode远程调试Linux环境C/C++二进制文件故障排查
解决VSCode远程调试Linux C/C++二进制连接失败问题
检查gdbserver命令正确性
你当前执行的gdbserver --attach :9999缺少目标进程ID,正确的attach命令格式是:
gdbserver --attach :9999 <目标进程PID>
如果是要启动程序并调试(而非attach到已运行进程),改用:
gdbserver :9999 /home/my/develop/bin/tsblock
修正launch.json配置
1. 调整request类型
当前request设为launch,但你是连接已启动的gdbserver,需改为attach:
"request": "attach"
2. 替换变量为绝对路径
避免${workspaceRoot}解析异常,直接写二进制文件的绝对路径:
"program": "/home/my/develop/bin/tsblock"
3. 添加miDebuggerPath配置
指定Linux端gdb的绝对路径(根据实际安装路径调整,通常为/usr/bin/gdb):
"miDebuggerPath": "/usr/bin/gdb"
修正后的完整launch.json示例
{ "version": "0.2.0", "configurations": [ { "name": "tsblock", "type": "cppdbg", "request": "attach", "program": "/home/my/develop/bin/tsblock", "miDebuggerServerAddress": "localhost:9999", "args": [], "stopAtEntry": false, "cwd": "/home/my/develop/bin", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
验证环境依赖
- 确认Linux端gdb版本与VSCode C/C++扩展兼容(gdb 8.0及以上版本基本适配)
- 卸载Windows端VSCode的C/C++扩展后,重新安装最新稳定版
排查网络与权限
- 执行
telnet localhost 9999测试Linux端9999端口的本地连通性,确认未被防火墙拦截 - 确保执行gdbserver的用户有足够权限attach到目标进程(必要时添加sudo前缀)
内容的提问来源于stack exchange,提问作者Smallrengar
相关产品推荐
相关产品推荐

