gdbserver_eclipse gdbserver_arm gdbserver(3)

电脑杂谈  发布时间:2017-04-10 22:02:02  来源:网络整理

说明此gdb在X86的Host上运行,但是调试目标是ARM代码。

(gdb) target remote 192.168.2.223:2345

(192.168.2.223为开发板IP)

出现提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

同时在minicom下提示:

Remote debugging from host 192.168.2.100

(gdb)

注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver启动了。结果输出是在Target Board端,用超级终端查看。连接成功,这时候就可以输入各种GDB命令如list、run、next、step、break等进行程序调试了。

以上针对通过nfs mount和tftp的方式,只能在主机上调试好后下载到开发板上运行,如果有错误要反复这个过程,繁琐不说,有些程序只能在开发板上调试。所以笔者采用了gdbserver的远程调试方式。gdbserver希望对大家调试程序有用!

五、如何利用串口调试

如果你用串口1调试hello的话,你就要现在板子上运行命令:

gdbserver hello /dev/ttyS0 (详情可以参考gdbserver目录下的readme文件)

这时gdbserver就在等待gdb的应答信号了。

然后在pc机上运行命令:

xxx-linux-gdb hello

在xxx-linux-gdb里敲入入下命令:

set remotedevice /dev/ttyS0(这里设置串口1)

set remote baud 9600 (这里设置串口波特率)

set debug remote 1(可选)

target remote /dev/ttyS0

操作到这儿,gdb就应该和gdbserver联系上了。

六、实战调试

# vi gdbtest.c

1 #include

2

3 int

4 func(int n){

5 int sum=0, i;

6 for (i=0; i

7 sum = i;

8 }

9 return sum;

10 }

11

12 int

13 main(void)

14 {

15 int i;

16 long result = 0;

17 for (i=0; i

18 result = i;

19 }

20

21 printf("result[1-100] = %d \n", result);

22 printf("resutl[1-225] = %d \n", func(255));

23

24 return 0;

25 }

# arm-linux-gcc -g gdbtest.c -o gdbtest // 交叉编译

2.下载文件到目标板: gdbtest和gdbserver

假设 host pc ip:192.168.1.45

board ip:192.168.1.180

将文件拷贝到目标板上:

先将gdbtest和gdbserver两个文件拷贝到主机的/tftpboot目录下,此时系统主机和目标机都必须能够支持nfs

在目标板的Linux中运行:


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40591-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...