建立嵌入式gdb调试环境

建立嵌入式gdb调试环境

一.下载gdb-7.1.tar.gz源代码
phil@ubuntu-embedded:~/gdb-7.1$ wget http://ftp.gnu.org/gnu/gdb/gdb-7.1.tar.gz

二.编译 GDB
#tar zxvf gdb-7.1.tar.gz

2.1 编译GDB Client
phil@ubuntu-embedded:~/gdb-7.1$ cd gdb-7.1/

phil@ubuntu-embedded:~/gdb-7.1$ ./configure --target=$TARGET --prefix=$PREFIX

phil@ubuntu-embedded:~/gdb-7.1$ make

phil@ubuntu-embedded:~/gdb-7.1$ make install

phil@ubuntu-embedded:~/gdb-7.1$ ls rls/bin/

arm-linux-gdb arm-linux-gdbtui arm-linux-run

phil@ubuntu-embedded:~/gdb-7.1$ file rls/bin/arm-linux-gdb

rls/bin/arm-linux-gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped

2.2 编译GDB Server
#cd ./gdb/gdbserver
#./configure --target=arm-linux --host=arm-linux

三.实战调试
1.编辑文件
# vi gdbtest.c
#include <stdio.h>

int
func(int n){
int sum=0, i;
for (i=0; i<n; i++){
sum += i;
}
return sum;
}

int
main(void)
{
int i;
long result = 0;
for (i=0; i<=100; i++){
result += i;
}

printf("result[1-100] = %d /n", result);
printf("resutl[1-225] = %d /n", func(255));

return 0;
}
# 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目录下
在目标板的Linux中运行:
#mount 192.168.1.108:/tftpboot /mnt/nfs
#cd /mnt/nfs
#ls
看是否有gdbtest和gdbserver两个文件。
3.运行调试
client board:
#./gdbserver 192.168.1.45:1234 gdbtest // 目标板上运行gdbtest 监听端口1234

host pc:
#cd /usr/local/arm-gdb/bin/
#copy gdbtest /usr/local/arm-gdb/bin/ // 将前面编译的文件gdbtest拷贝到此目录
#./arm-linux-gdb gdbtest
(gdb)target remote 192.168.1.180:1234 // 连接到开发板 成功后就可以进行调试
(gdb)list or l
(gdb)break func
(gdb)break 22
(gdb)info br
(gdb)continue or c //记住这里不是用run, 因为程序已在Target Board上面由gdbserver启动了。结果输出是在Target Board端

(gdb)next or n
(gdb)print or p result
(gdb) finish // 跳出func函数
(gdb) next
(gdb) quit
建立连接后进行gdb远程调试和gdb本地调试方法相同

说明:
1)目标机上的被调试程序gdbtest, 与主机上的程序gdbtest, 是相同的程序, 但位置不一样,并非是用网络共享的同一个位置的同一个文件, 一个在目标机上 ,一个在主机上, 没有关系.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值