我正在与Eclipse(在Windows中)进行斗争,以使其连接到我的Linux盒子并远程编译和调试C ++代码。
我的工作:
perl ./daemon.pl 4075
)我可以做的一些手工操作(没有Eclipse):
ssh mybox 'cd /path/to/project; gdb main'
ssh mybox 'cd /path/to/project; gdbserver fqdn:10000 main'
什么不起作用:在Eclipse中调试
可能导致问题的其他事项:
ssh
二进制文件(不在PATH
上)PATH
我真的想在Eclipse中为我的C ++项目进行远程调试。 你有什么建议从这里开始吗?
答案 0 :(得分:2)
使用CLI进行健全性检查
在您做任何事之前,请确保:
这个答案假设你可以在开发板上做:
sudo apt-get install gdbserver
gdbserver :1234 path/to/executable
主持人:
aarch64-linux-gnu-gdb \
-ex "target remote board-hostname:1234" \
-ex "file path/to/cross/compiled/executable" \
-ex 'tb main' \
-ex c
然后逐步调试所有内容。
Eclipse设置
在Ubuntu 16.04主机上测试,Eclipse Oxygen 4.7.0(从网站下载),gdbserver
7.12,aarch64-linux-gnu-gdb
7.6。
我已成功使用以下所有方法:
<强>手册强>
使用此方法,我们必须在目标上启动gdbserver
,然后再在Eclipse上运行调试。
Pro:分配通过Eclipse配置SSH连接以允许Eclipse
Con:每次调试开始时都必须重新启动gdbserver
。如果Eclipse理解gdbserver --multi
,这可以克服,但我不认为它?
由于其简单性,我建议您首先使用此方法。
打开调试配置,然后创建一个新的“C / C ++远程应用程序”。
在“主要”标签下:
像往常一样选择“名称”,“项目”和“C / C ++应用程序”进行本地调试
在底部启动器中,单击“选择其他”,选中“使用配置特定设置”并选择“GDB(DSF)手动远程调试启动器”
为什么我们这样做:自动启动器首先通过SSH连接到主板并为您启动gdbserver
。
在“调试器”选项卡下:
最后,像在CLI中一样手动启动目标上的gdbserver
:
gdbserver :1234 path/to/executable
通常从Eclipse启动调试器。
每次终止程序时都必须重新启动gdbserver
。
使用密码验证自动
这是开发板的最佳方法,它具有固定的公开密码。
它使用SSH和密码连接到目标,并且每次都会自动在目标上启动gdbserver
,这非常方便!
目标gdbserver
标准输出进入Eclipse“控制台”窗口,这进一步减少了窗口切换。
在Eclipse集中:
/root/path/to/project/path/to/executable
使用公钥自动
与密码验证非常相似,只是您必须转到:“连接”,“新建”,然后选择“基于公钥的验证”
优点:
缺点:
如果您执行以下操作,SSH无需密码即可连接:
~/.ssh/authorized_keys
以包含来自主机的~/.ssh/id_rsa.pub
在使用此方法之前,请确保您的授权密钥在命令行中运行,即您现在应该能够执行此操作:
ssh user@host
没有输入任何密码。
更改流程的当前工作目录
答案 1 :(得分:1)
“通过”C ++远程调试“错误:未指定程序(我需要本地代码吗?)”
是的,因为符号是从本地代码副本加载的。
在此类启动配置的调试器选项卡中,您将找到远程服务器和端口的设置。使用启动gdbserver时指定的计算机名称和端口。
AFAIK这仍然无效,因为在本地Windows机器上运行的gdb不支持调试linux程序。您将需要交叉构建gdb(使用host = mingw-or-something和target = linux进行配置和构建)。
答案 2 :(得分:1)
不幸的是,这个问题还没有产生理想的解决方案。不过,您可能对我实际“解决”问题的方式感兴趣:
我们现在正在Linux机器上直接开发,远程完成所有工作。我们在Linux机器上设置桌面用户并通过VNC登录以运行Eclipse并将其用作gdb
的前端。虽然VNC不是最好的解决方案(也许我们稍后会尝试NX),但这个解决方案可以让我们摆脱gdbserver
或RSE / RDT的任何问题。
答案 3 :(得分:1)
截至目前(Luna M6),当您需要时,Eclipse CDT + RDT + RSE似乎是一个缺少某些链接的链:
目前,这些要求在Raspberry Pi和OLinuxino等丰富的Linux ARM板上非常普遍。这些板通常具有足够的资源来运行工具链,但不足以提供远程桌面环境来远程运行IDE。
我的最终解决方案: 经过几天的努力,我终于放弃了{CD + + RDT + RSE for NetBeans C/C++ Remote Development Environment,这对我来说就像一个魅力。
答案 4 :(得分:1)
对于并行应用程序版本,您可以尝试使用Eclipse this plugin here is a link
它在从Windows机器到Linux上的程序开发中工作正常