我是Eclipse的新手。尝试设置进行远程调试。
这是情况,我正在连接运行Linux的远程机器,我正在运行Windows。
1)我已经为Eclipse安装了所有必需的工具,并且能够连接到Linux机器。
2)远程机器有gdbserver
linux1[1]% gdbserver
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...]
gdbserver [OPTIONS] --attach COMM PID
gdbserver [OPTIONS] --multi COMM
COMM may either be a tty device (for serial debugging), or
HOST:PORT to listen for a TCP connection.
Options:
--debug Enable debugging output.
我是否需要在gdbserver
???
3)我还应该在Eclipse中配置什么?用于远程调试?
4)我的GDB版本与远程Machine GDB有什么不同?
答案 0 :(得分:7)
gdbserver
需要更多参数。例如,说gdbserver localhost:1337 yourprogram yourprogramarguments
并保持运行。
然后,在Eclipse中,为“C / C ++应用程序”创建新的调试配置。在主选项卡的底部,选择GDB (GSF) Remote System Process Launcher
作为启动器。在调试器选项卡上,选择gdbserver Debugger
作为调试器。在连接下,将TCP
称为连接类型,并将localhost:1337
作为地址。启动配置时,您可以通过在控制台中输入命令来控制远程gdb
。
答案 1 :(得分:6)
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运行gdbserver
,这是另一个可能的失败点。
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
没有输入任何密码。
答案 2 :(得分:2)
针对Eclipse 2019-03的更新
在eclipse 2019中,上述步骤无效,因为Eclipse更改了“ C / C ++远程应用程序”中配置的布局。
@Ciro帖子的更新:
以下步骤适用于我: 在“调试配置”下 在“ C / C ++远程应用程序”下 在“主要”标签下:
在“调试器”标签下:
这些是我所做的唯一更改,以便上一个答案可以与我一起使用。