2010-10-28 217 views
7

我对Eclipse很新。试图设置做远程调试。如何使用gdbserver设置Eclipse进行远程C调试?

这里是情况,我连接到运行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版本与远程机器GDB不同?

+0

没有人???????? – newprint 2010-11-02 00:10:38

+0

[使用Eclipse CDT/RSE/RDT远程调试C++应用程序]的可能重复(https://stackoverflow.com/questions/15685104/remote-debugging-c-applications-with-eclipse-cdt-rse-rdt) – 2017-08-13 09:08:05

回答

5

gdbserver需要更多参数。例如,说gdbserver localhost:1337 yourprogram yourprogramarguments并保持它运行。

然后,在Eclipse中,为“C/C++应用程序”创建一个新的调试配置。在主选项卡的底部,选择GDB (GSF) Remote System Process Launcher作为启动器。在调试器选项卡上,选择gdbserver Debugger作为调试器。在连接的情况下,说作为连接类型TCP,并给localhost:1337作为地址。当您启动配置时,您可以通过在控制台中输入命令来控制远程gdb

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 4.7.0氧气(从网站下载),gdbserver 7.12,aarch64-linux-gnu-gdb 7.6。

我已经成功地使用所有的下列方法:

  • 手动
  • 自动
    • 密码身份验证
    • 公钥AUTH

使用手册

使用此方法,我们必须在Eclipse上运行调试之前在目标上启动gdbserver

临:通过Eclipse配置SSH连接以允许Eclipse运行gdbserver,这是另一个可能的故障点。您需要在每次调试开始时重新启动gdbserver。如果Eclipse理解gdbserver --multi,这可以被克服,但我不认为它确实如此?

由于其简单性,我建议您先使用此方法。

打开调试配置,然后创建一个新的“C/C++远程应用程序”。

在标签 “主”:

  • 在底部发射器中选择 “名称”, “项目” 和 “C/C++应用程序” 如常用于本地调试

  • ,点击“选择其他”,选中“使用配置特定设置”并选择“GDB(DSF)手动远程调试启动器”

    为什么我们这样做:自动启动程序首先使用SSH连接到主板并为您启动gdbserver

    enter image description here

在标签 “调试器”:

  • “GDB调试器”:与从CLI主机,aarch64-linux-gnu-gdb用于该实施例

  • 撒哈拉选项卡“连接”:将主机名和端口设置为在CLI上传递给主机(board-hostname1234

    enter image description here

    enter image description here

最后,就像我们从CLI做的目标手动启动gdbserver

gdbserver :1234 path/to/executable 

和正常启动Eclipse中的调试器。

您必须在每次终止程序时重新启动gdbserver

自动与密码身份验证

这是开发板,它有固定的公知密码的最佳方法。

它通过SSH和密码连接到目标,每次自动在目标上启动gdbserver,非常方便!

目标gdbserver stdout转到Eclipse的“控制台”窗口,这进一步减少了窗口切换。

在Eclipse中设置:

自动用公钥

非常相似的密码认证,但你必须去:“连接”,“新建”,然后选择“基于公共密钥认证”

优点:

  • 克服了“安全存储无法保存主密码”,如果你有一个未加密的私钥(不安全的,但罚款devboards)
  • 用于服务器,你可能已经安装了公共密钥

缺点:

  • 键设置可能会伤害第一次
  • 每当devboard被核爆

所以必须重做键设置我更喜欢这种服务器的方法。

SSH可以连接不使用密码,如果您:

在使用此方法之前,请确保您的授权d键从命令行工作,即您现在应该可以这样做:

ssh [email protected] 

不输入任何密码。