我尝试使用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时,它按预期运行。
答案 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
你完成了:)
快乐调试!!!