我已经将gdbserver
附加到一个进程上,在远程机器上正常工作,端口为9999。在我的本地机器上,从命令行输入:
$ gdb
(gdb) target remote localhost:9999
运行得很好。我正在尝试配置Vs Code调试器,以便我可以在这种情况下拥有GDB前端。这是我的启动JSON。
"version": "0.2.0",
"configurations": [
{
"name": "GDB",
"type": "cppdbg",
"request": "attach",
"miDebuggerServerAddress": "localhost:9999",
"program": "path-to-cross-compiled-binary-with-same-debug-symbols",
"linux": {
"MIMode": "gdb",
},
}
]
这里有几个问题。首先,“program”是为什么?在这种情况下,gdb不需要任何程序名称来启动。程序已经在远程运行,gdbserver已经连接到它。我只想让gdb客户端连接到9999端口。但无论如何,继续。
它要求我提供一个processId。这也没有意义,我已经连接到远程了。有趣的部分是:
- 如果你省略processId,VS Code会说“无法解析进程id”
- 如果您指定processId,VS Code会说“processId不能与miDebuggerServerAddress一起使用”
当然,如果我正在使用调试器服务器地址,服务器已经附加到PID,因此在这种情况下不能使用processId是有道理的。但是,如果我省略它,则VS Code会给出第一个错误。这在某种程度上是循环的。
任何人都可以在VS Code C++调试器中使用gdbserver地址连接到远程进程,这是我的问题。我的启动文件有什么问题?
laucnh.json
文件,这样我就可以根据你提供的链接尝试制作出可用的东西了吗? - meguli