使用Eclipse CDT/RSE/RDT远程调试C++应用程序

Juv*_*uve 14 c++ eclipse gdb remote-debugging eclipse-cdt

我正在与Eclipse(在Windows中)进行斗争,以使其连接到我的Linux机箱并远程编译和调试C++代码.

我的工作:

  • 安装CDT/RSE/RDT(Eclipse Juno,CDT 8.1.2,PTP(RDT)6.0.4,RSE 3.4)
  • rdt-server在Linux机器上运行(perl ./daemon.pl 4075)
  • 创建本地C++项目(基于Makefile)
  • 编译和调试本地C++项目
  • 创建远程项目(使用与rdt-server的"Linux"连接)
  • 编译远程项目(基于Makefile)

我可以做的一些手动的事情(没有Eclipse):

  • "远程"调试我编译的项目: ssh mybox 'cd /path/to/project; gdb main'
  • 启动一个gdbserver: ssh mybox 'cd /path/to/project; gdbserver fqdn:10000 main'

什么不起作用:在Eclipse中调试

  • 通过"C++应用程序"调试错误:未指定程序(因为我没有本地代码)
  • 通过"C++远程"调试错误:未指定程序(我需要本地代码吗?)
  • 通过"C++ attach"调试(调试器:"gdbserver")
    • 在linuxbox上运行的gdbserver
    • gdb无法与gdbserver交谈(cygwin gdb 7.5,linux gdb/gdbserver 7.3); 警告:架构拒绝了目标提供的描述.
  • 通过"C++ attach"调试(调试器:"gdb")将尝试附加到我的Windows进程.

其他可能导致问题的事情:

  • 我正在使用sshMSYS/Git提供的二进制文件(不是PATH)
  • Cygwin没有开启 PATH

我真的想在Eclipse中为我的C++项目进行远程调试.您有什么建议从这里开始吗?

dbr*_*nk0 1

“通过“C++远程”调试错误:未指定程序(我需要本地代码吗?)”

是的,因为符号是从代码的本地副本加载的。

在此类启动配置的调试器选项卡中,您将找到远程服务器和端口的设置。使用启动 gdbserver 时指定的计算机名称和端口。

AFAIK 这仍然无法工作,因为在本地 Windows 计算机上运行的 gdb 不支持调试 Linux 程序。您将需要 gdb 的交叉构建(使用 host=mingw-or-something 和 target=linux 进行配置和构建)。