我目前正在使用 linux 使用 C++ 开发分布式软件,该软件同时在 20 多个节点上执行。因此,我发现的最具挑战性的问题之一是如何调试它。
我听说可以在单个 gdb session 中管理多个远程 session (例如,在主节点中我创建 gdb session ,在每个其他节点中我使用 gdbserver 启动程序),这可能吗?如果可以,你能举个例子吗?您知道其他方法吗?
谢谢
最佳答案
你可以尝试这样做:
首先在远程主机上使用 gdbserver 启动节点。如果您使用 --multi 标志启动它,甚至可以在没有要调试的程序的情况下启动它。当服务器处于多模式时,您可以从本地 session 控制它,我的意思是您可以让它启动您要调试的程序。 然后,在你的 gdb session 中启动多个下级
gdb> add-inferior -copies <number of servers>
将它们切换到远程目标并将它们连接到远程服务器
gdb> inferior 1
gdb> target extended-remote host:port // use extended to switch gdbserver to multi mode
// start a program if gdbserver was started in multi mode
gdb> inferior 2
...
现在您已将它们全部附加到一个 gdb session 中。问题是,据我所知,这并不比从不同的控制台选项卡启动多个 gdb 好多少。另一方面,您可以通过这种方式编写一些脚本或自动测试。请参阅 gdb 教程:server和 inferiors .
关于c++ - 使用 gdb 进行分布式软件调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656466/