使用 CLI 进行健全性检查
在做任何事情之前,请确保:
- 正确交叉编译应用程序并确保其运行。您不一定需要使用 Eclipse 来执行此操作。
- 从命令行让 GDB 远程调试正常工作
这个答案假设你可以在开发板上做:
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.
我已经成功地使用了以下所有方法:
Manual
使用这种方法,我们必须启动gdbserver
在 Eclipse 上运行调试之前先在目标上执行此操作。
Pro:无需通过 Eclipse 配置 SSH 连接,以允许 Eclipse
Can:你必须重新启动gdbserver
每次调试开始时。如果 Eclipse 理解的话,这个问题就可以克服gdbserver --multi
,但我不认为是这样?
由于其简单性,我建议您首先使用此方法。
打开调试配置,然后创建一个新的“C / C++ 远程应用程序”。
在“主要”选项卡下:
像往常一样选择“名称”、“项目”和“C/C++ 应用程序”进行本地调试
-
在底部启动器中,单击“选择其他”,选中“使用配置特定设置”并选择“GDB (DSF) 手动远程调试启动器”
为什么我们这样做:自动启动器首先使用 SSH 连接到开发板并启动gdbserver
为你。
在“调试器”选项卡下:
最后手动启动gdbserver
就像我们在 CLI 中所做的那样在目标上:
gdbserver :1234 path/to/executable
并从 Eclipse 正常启动调试器。
你必须重新启动gdbserver
每次终止程序时。
自动使用密码验证
对于具有固定公开密码的开发板来说,这是最好的方法。
它使用 SSH 和密码连接到目标,并启动gdbserver
每次都会自动瞄准目标,超级方便!
Target gdbserver
stdout 转到 Eclipse“控制台”窗口,这进一步减少了窗口切换。
在 Eclipse 中设置:
- 解决“安全存储无法保存主密码”错误,如下所述:如何解决使用 SSH 密码调试连接的 Eclipse CDT 远程应用程序中的“安全存储无法保存主密码”? https://stackoverflow.com/questions/45658574/how-to-solve-secure-storage-was-unable-to-save-the-master-password-in-eclipse/45658575#45658575
- 将启动器设置为:“自动远程调试启动器”
- 设置“远程绝对文件路径
对于 C/C++ 应用程序”
/root/path/to/project/path/to/executable
- “连接”、“新建”,然后选择“基于密码的身份验证”
使用公钥自动
与密码身份验证非常相似,不同之处在于您必须转到:“连接”、“新建”,然后选择“基于公钥的身份验证”
Pros:
- 如果您有加密的私钥,则克服“安全存储无法保存主密码”(不安全,但适合
- 对于服务器,您可能已经设置了公钥
Cons:
- 第一次按键设置可能会很麻烦
- 每当开发板受到攻击时都必须重做密钥设置
如果您满足以下条件,则 SSH 无需密码即可连接:
- set
~/.ssh/authorized_keys
在目标上包含~/.ssh/id_rsa.pub
来自主机
- 主机上有一个未加密的私钥,它绕过了我们的密码问题
- 正确设置讨厌的文件夹权限:https://unix.stackexchange.com/questions/36540/why-am-i-still-getting-a-password-prompt-with-ssh-with-public-key-authentication https://unix.stackexchange.com/questions/36540/why-am-i-still-getting-a-password-prompt-with-ssh-with-public-key-authentication
在使用此方法之前,请确保您的授权密钥可以在命令行中使用,即您现在应该能够执行以下操作:
ssh user@host
无需输入任何密码。
更改进程的当前工作目录
Eclipse CDT中使用gdbserver自动启动器远程调试时如何设置程序的当前工作目录? https://stackoverflow.com/questions/45784188/how-to-set-the-current-working-directory-of-the-program-when-remote-debugging-wi