如何在Raspberry Pi上使用gdbserver?

时间:2016-01-02 14:41:25

标签: linux debugging gdb gdbserver

我尝试使用gdb远程调试。 在目标计算机上(使用Ubuntu Mate 15.10的Raspberry Pi),我运行gdbserver :4444 main。在我的笔记本电脑上,我运行./arm-linux-gnueabihf-gdb ~/workspace/piCCompileProj/Debug/main。在gdb提示符下(在我的笔记本电脑上),我输入:

target remote <target>:4444
run

但gdb报告此错误消息:

  

&#34;遥控器&#34;目标不支持&#34;运行&#34;。尝试&#34;帮助目标&#34;或者&#34;继续&#34;。

如何使用gdb远程?当我在Raspberry Pi上直接使用gdb时,它按预期运行。

2 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法。

如果我在PI上运行gdbserver :4444 main,主程序将启动,而gdb中的run命令则不需要。 为了完全控制gdb,我在PI gdbserver --multi :4444和本地PC中使用我使用命令:./arm-linux-gnueabihf-gdb -x /path/init /path/init文件的内容为:

symbol-file /home/username/workspace/piCCompileProj/Debug/main
target extended-remote 192.168.0.100:4444
set remote exec-file /home/username/cppSandbox/main

答案 1 :(得分:0)

这是帮助我的原因(如果有任何初学者在这里并且正在寻找解决方案)

假设 Ubuntu(17.04) - &gt; 主持人&amp; Raspberry Pi(Model-3b) - &gt; 目标,我的可执行文件(.o)文件 - &gt;的 dowhile

第1步:从主机为目标制作可执行文件(.o)文件。请查看以下命令:

arm-linux-gnueabihf-gcc -g dowhile.c -o dowhile

请下载相应的库以成功运行此命令。

第2步:将生成的可执行文件(dowhile.o)复制到目标计算机,如下所示:

scp dowhile root@10.x.y.z:/xxxx/yyyy/

(请根据您的目标和来源填写x和y详细信息)

另外,检查复制的可执行文件是否正常工作:

./dowhile

第3步:在目标计算机上运行gdbserver

gdbserver localhost:2000 dowhile

(保留2000或您的端口的任何数字,无论如何都会有效)

第4步:在您的主机上运行gdb

gdb-multiarch dowhile

第5步:将架构设置为 arm

(gdb) set architecture armv5te

第6步:远程连接目标

(gdb) target remote 10.x.y.z:2000

你完成了:)

快乐调试!!!