如何在没有 gdbserver 的情况下使用 Eclipse CDT 进行远程调试?

Posted

技术标签:

【中文标题】如何在没有 gdbserver 的情况下使用 Eclipse CDT 进行远程调试?【英文标题】:How to do remote debugging with Eclipse CDT without gdbserver? 【发布时间】:2010-09-10 00:28:17 【问题描述】:

我们在 Windows 上使用 Eclipse CDT 5 C++ IDE 在远程 AIX 主机上开发 C++ 应用程序。

Eclipse CDT 能够使用 gdbserver 执行远程调试。不幸的是,AIX 不支持 gdbserver。

是否有人熟悉在没有 gdbserver 的情况下使用 Eclipse CDT 进行远程调试的方法?也许使用 SSH shell 连接到 gdb?

【问题讨论】:

gdbserver: ***.com/questions/15685104/… 查看 BVRDE - 用于远程调试的 IDE(无需 gdbserver 即可工作):sourceforge.net/projects/bvrde 【参考方案1】:

现在我终于让 gdb 远程运行了。在任务栏上的 Bug 符号处,我选择了 Debug Configurations - GDB Hardware Debugging。

在主要 C/C++ 应用程序中,我在可执行文件 (X:\abin\vlmi9506) 的 Samba 共享上设置了完整路径。我还在项目中的X:\abin 上设置了一个链接文件夹。然后我在 GDB 设置中修改了我的批处理脚本。它不是直接在 plink-session 中调用 gdb,而是一个打开 gdb 的 unix-shell-script。这样我就有可能在调试之前为程序设置一些 unix 环境变量。我的批处理中的调用:

plink.exe prevoax1 -l suttera -pw XXXXX -i /proj/user/dev/suttera/vl/9506/test/vlmi9506ddd.run 20155 dev o m

在 unix 脚本中,我使用 eclipse 中的命令行参数启动 gdb,这是我在之前的尝试中发现的。 shell 命令中的调用如下所示:

gdb -nw -i mi -cd=$LVarPathExec $LVarPathExec/vlmi9506

然后 IBM 只为 AIX 提供 gdb 6.0。我在http://www.perzl.org/aix/index.php?n=Main.Gdb 的网上找到了 6.8 版。我们的管理员安装了它。

我现在可以单步执行程序并观察变量。我什至可以直接在控制台视图中编写 gdb 命令。呸呸呸呸

希望对其他人也有帮助。不能说,什么是真正的胜利者行动。 但每个答案都会提出更多新问题。现在我得到了其中的 3 个。

    当我启动调试配置时,我必须单击工具栏中的重新启动才能真正进入主程序。不重启可以直接进入main吗? 在 AIX 上,我们的程序首先针对嵌入式 sql 进行预处理。预处理的 c 源代码放在另一个目录中。当我双击该行设置断点时,我收到警告“未解析的断点”,并且在我看到的 gdb-console 中,断点设置为错误的预处理源。是否可以在正确的源上设置断点? 我们在 AIX 上使用 CICS。使用 xldb-Debugger 和 CICS 的 CDCN-command,当我们进入程序时,我们管理调试已启动。是否也可以使用 gdb-eclipse 远程获取(在 plink 中)?

【讨论】:

【参考方案2】:

对于我无法真正测试答案的问题,我通常不会在黑暗中试一试,但由于这个问题已经坐了一天,我会试一试。看来是:

http://wiki.eclipse.org/TM_and_RSE_FAQ#How_can_I_do_Remote_Debugging_with_CDT.3F

...即使 CDT 自该 wiki 页面创建以来已更改,您仍应能够将调试命令更改为:

ssh 远程主机 gdb

而不是使用使用 gdbserver 的 TM。这可能会比 TM 远程调试稍微慢一些,因为它实际上使用本地 gdb,但另一方面,这样您就不必 NFS 或 SMB 挂载源代码以使其可用于本地调试器(如果你在局域网上,无论如何都可能无关紧要)。

还有一个适用于 linux 的参考 TCF 实现,您可能会或可能不会为 AIX 重新编译运气,但如果 gdbserver 不可用,它允许远程调试:

http://wiki.eclipse.org/DSDP/TM/TCF_FAQ

【讨论】:

【参考方案3】:

还尝试使用 windows eclipse-cdt-gdb 远程调试 aix-appl。 最后被 unix/windows 路径问题阻塞。也许我的结果可以帮助你更进一步——也许你已经得到了它的工作。我对你的评论很感兴趣。在 eclipse 新闻门户上询问 - 按照 martin oberhuber 的回答(再次感谢)尝试 dsp dd(也因路径问题而被阻止)并在 eclipse bugzilla 中设置请求。

这里是新闻链接: http://www.eclipse.org/newsportal/article.php?id=406&group=eclipse.dsdp.tm 这是我的bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=252758

目前我们仍然使用 xldb 调试 localy,但我目前正在尝试 ddd-gdb。至少本地 gdb 正在运行。

【讨论】:

以上是关于如何在没有 gdbserver 的情况下使用 Eclipse CDT 进行远程调试?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 PEM 密钥的情况下通过 ssh 进入 EC2 实例?

在 Qt Creator 中使用 GDB 时如何终止 gdbserver?

如何在不阻止我的网络服务器的情况下上传大文件?使用 python 和 Amazon Beanstalk/EC2

如何在不使用 Auto-scaling 的情况下在一个区域的 3 个不同 AZ 中启动三个相同的 EC2 实例

嵌入式arm linux环境中gdb+gdbserver调试

ec2 实例无法在没有弹性 IP 地址的情况下访问公共子网中的互联网?