c++ - 使用 gdb 进行分布式软件调试

标签 c++ linux parallel-processing gdb distributed-computing

我目前正在使用 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 教程:serverinferiors .

关于c++ - 使用 gdb 进行分布式软件调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656466/

相关文章:

c++ - 匹配 Eigen 和 Ceres-Solver 版本的最简单方法是什么?

linux - Sed:替换日期格式

regex - 匹配后如何停止grep

linux - oom-killer 杀死 Docker 中的 java 应用程序 - 报告内存使用不匹配

c++ - VS 自动并行化

sql - 读取表变量的查询可以在 SQL Server 2008 中生成并行执行计划吗?

python - dask client.submit 的行为

c++ - LD_PRELOAD 仅适用于 malloc,不是免费的

c++ - 如何将变量存储为空

c++ - 读取 txt 文件时出现 "Debug Assertion Failed"