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

时间:2020-03-05 18:58:18  来源:igfitidea点击:

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

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

是否有人熟悉使用不带gdbserver的Eclipse CDT进行远程调试的方法?也许使用到gdb的SSH Shell连接?

解决方案

回答

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

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

...即使从创建该Wiki页面以来CDT发生了变化,我们仍然应该能够将debug命令更改为:

ssh remotehost gdb

而不是使用使用gdbserver的TM。这可能会比TM远程调试稍微慢一点,因为它实际上使用的是本地gdb,但是从另一方面来说,我们不必NFS或者SMB挂载源代码即可将其提供给本地调试器(如果我们在局域网上,则可能不会有任何问题)。

还有一个针对Linux的参考TCF实现,我们可能会或者可能不会为AIX重新编译任何运气,但是如果gdbserver不可用,它可以进行远程调试:

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

回答

还尝试使用Windows eclipse-cdt-gdb远程调试aix-appl。
最终由于unix / windows路径问题而被阻止。也许我的结果可以为我们提供更多帮助,也许我们已经可以使用它了。我对评论感兴趣。在eclipse新闻门户网站上问到以下问题后(马丁·奥伯胡伯(再次感谢))尝试了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调试本地,但是我现在正在尝试ddd-gdb。至少本地gdb正在运行。

回答

终于,无论如何我现在都能远程运行gdb了。在任务栏上的错误符号处,我进行了调试配置GDB硬件调试。

在Main C / C ++ Applications中,我在可执行文件(X:\ abin \ vlmi9506)的Samba共享上设置完整路径。我还在项目的X:\ abin`上设置了一个链接文件夹。然后,我在GDB安装程序中修改了我的批处理脚本。它不是在plink-session中直接调用gdb,而是在unix-shell-script中打开gdb。这样,我就有可能在进行调试之前为程序设置一些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命令。 yabadabadooooooo

希望对其他人也有帮助。不能说,什么才是真正的赢家行动。
但是每个答案都会带来更多新问题。现在我有3个了。

  • 当我启动调试配置时,我必须单击工具栏中的"重新启动"才能真正进入主过程。是否可以直接进入main而不重启?
  • 在AIX上,我们的程序首先针对嵌入式sql进行了预处理。预处理的c源文件位于另一个目录中。当我双击该行以设置断点时,会收到警告"未解决的断点",并且在gdb控制台中我看到该断点设置为预处理的源,这是错误的。是否可以在正确的源上设置断点?
  • 我们在AIX上使用CICS。使用CICS的xldb-Debugger和CDCN-命令,当我们进入程序时,我们可以开始进行调试。是否可以通过gdb-eclipse远程(以plink方式)获取该信息?