首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gdbserver设置用于远程C调试的Eclipse?

问如何使用gdbserver设置用于远程C调试的Eclipse?
EN

Stack Overflow用户
提问于 2010-10-28 00:17:11
回答 3查看 36.9K关注 0票数 15

我对Eclipse很陌生。尝试设置来进行远程调试。

这里是情况,我连接到远程机器运行Linux,我运行的是Windows。

1)我已经为Eclipse安装了所有必要的工具,并且能够连接到Linux机器。

2)远程机器有gdbserver

代码语言:javascript
复制
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不同?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-20 21:28:37

gdbserver需要更多的参数。例如,假设gdbserver localhost:1337 yourprogram yourprogramarguments并保持其运行。

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

票数 8
EN

Stack Overflow用户

发布于 2017-08-10 08:56:05

CLI检查

在你做任何事之前,确保你:

这个答案假设您可以在开发板上做以下工作:

代码语言:javascript
复制
sudo apt-get install gdbserver
gdbserver :1234 path/to/executable

在主机上:

代码语言:javascript
复制
aarch64-linux-gnu-gdb \
  -ex "target remote board-hostname:1234" \
  -ex "file path/to/cross/compiled/executable" \
  -ex 'tb main' \
  -ex c

然后对所有内容进行正确的调试。

Eclipse安装

在Ubuntu16.04主机上测试,EclipseOxy4.7.0(从网站下载),gdbserver 7.12,aarch64-linux-gnu-gdb 7.6。

我成功地使用了以下所有方法:

  • manual
  • automatic
    • 密码auth
    • 公共密钥auth

​

手册

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

Pro:通过Eclipse配置SSH连接以允许Eclipse运行gdbserver,这是另一个可能的失败点。

每次调试启动时,您都必须重新启动gdbserver。如果Eclipse理解gdbserver --multi,这是可以克服的,但我不认为它是这样的?

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

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

在“Main”选项卡下:

  • 一如既往地为底部启动程序的本地调试
  • 选择“名称”、“项目”和"C/C++应用程序“,单击"Select”,检查“使用配置特定设置”并选择"GDB (DSF)手动远程调试启动程序“。

为什么要这样做:自动发射器首先与SSH连接到板上,然后为您启动gdbserver .。

​

在“调试器”项下:

“GDB调试器”:与主机上的CLI相同,此example

  • Sub-tab“连接”的aarch64-linux-gnu-gdb:将主机名和端口设置为传递到CLI上的主机(board-hostname和1234)

)

​

最后,在目标上手动启动gdbserver,就像我们从CLI中所做的那样:

代码语言:javascript
复制
gdbserver :1234 path/to/executable

并正常地从Eclipse启动调试器。

每次终止程序时都必须重新启动gdbserver。

带有密码的自动

这是开发板的最佳方法,因为开发板已经固定了公开已知的密码。

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

目标gdbserver标准输出转到Eclipse窗口,这进一步减少了窗口切换。

在Eclipse集合中:

关于“安全存储无法保存主密码”的错误,如“How to solve "Secure storage was unable to save the master password" in Eclipse CDT remote application with SSH password debug connection?

  • set启动程序”中解释的:“自动远程调试Launcher"

  • set”,“C/C++应用程序的远程绝对文件路径”到/root/path/to/project/path/to/executable

  • "Connection",“新建”,并选择“基于密码的authentication"

”。

带有公钥的自动

非常类似于密码身份验证,但必须转到:"Connection“、"New",然后选择”基于公钥的身份验证“。

优点:

如果您有未加密的私钥(不安全,但对devboards)

  • for服务器来说很好,您可能已经设置了公钥

),则

  • 克服了“安全存储无法保存主密码”的问题。

缺点:

  • 密钥设置可能会在
  • 必须在devboard核化

时第一次重做密钥设置时受到伤害。

因此,对于服务器,我更喜欢这种方法。

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

将目标上的https://unix.stackexchange.com/questions/36540/why-am-i-still-getting-a-password-prompt-with-ssh-with-public-key-authentication设置为包含来自主机

  • 的~/.ssh/id_rsa.pub的~/.ssh/authorized_keys在主机上有一个非加密的私钥,这绕过了我们的密码问题--正确设置

  • 设置了烦人的文件夹权限:

在使用此方法之前,请确保您的授权密钥在命令行中工作,即您现在应该能够:

代码语言:javascript
复制
ssh user@host

不需要输入任何密码。

票数 12
EN

Stack Overflow用户

发布于 2019-10-10 09:13:02

Eclipse2019-03更新

在Eclipse2019中,上述步骤没有工作,因为eclipse更改了"C/C++远程应用程序“中配置的布局。

@Ciro贴子更新:

以下步骤与我一起工作:在"C / C++远程应用程序“下的”调试配置“下,在”Main“选项卡下:

  • 选择“==>”远程主机。
  • 选择"New“、"SSH”(在我的示例中),然后输入远程目标计算机的配置。在“C/C++应用程序的远程绝对文件路径:”中的
  • :在目标/远程设备中设置应用程序的路径。

在“调试器”项下:

  • 子选项卡“连接”已被删除。
  • 新子选项卡"Gdbserver设置“已被添加。
  • 将"Gdbserver路径:“配置为指向gdbserver的路径。在我的例子中,它是"/usr/bin/gdbserver"
  • Configure端口号

这是我所做的唯一改变,以便前面的答案适用于我。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4038760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档