如何在树莓派上使用gdbserver?

3

我尝试使用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报告了以下错误信息:

"remote"目标不支持"run"。请尝试"help target"或"continue"。

我如何使用gdb远程调试?当我直接在树莓派上使用gdb时,它可以正常运行。

你已经让它工作了吗?因为你在这之前打开了另一个问题。如果是的话,你可以回答自己的问题来分享你的经验。 - Martin Zabel
2个回答

1
我找到了解决方案。
如果在我的树莓派上运行gdbserver :4444 main,主程序将启动,并且不需要在gdb中使用run命令就可以完全控制gdb。 为了在树莓派上拥有完全的gdb控制权,我使用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

0

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

假设Ubuntu(17.04) -> 主机 & Raspberry Pi(Model-3b) -> 目标,我的可执行文件(.o)-> 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

完成了 :)

愉快的调试!!!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接