做分类信息网站赚钱吗,wordpress 插件 翻译,网站建设 天秀网络,界面设计器From: http://blog.csdn.net/ghostyu/article/details/8081897 移植gdb到嵌入式的ipnc中#xff0c;大多数人习惯使用printf调试#xff0c;但是遇到像”segment fault“这的错误也是后就很难定位#xff0c;这时候gdb的作用就体现出来了
在pc使用gdb调试应用程序前…From: http://blog.csdn.net/ghostyu/article/details/8081897 移植gdb到嵌入式的ipnc中大多数人习惯使用printf调试但是遇到像”segment fault“这的错误也是后就很难定位这时候gdb的作用就体现出来了
在pc使用gdb调试应用程序前应用程序编译是需带上 gcc -g参数就是编译带有调试信息的程序不然使用gdb是找不到程序的symbol的
在arm中使用gdb也不例外也要加上arm_v5t_le-gcc -g参数只不过arm上linux不同于pc嵌入式的gdb采用这样的调试方式
在arm中运行gdbserver
在pc上运行gdbserver对应的arm-linux-gdb这样的方式来调试程序。
所以的调试操作均在pc上完成但是程序的输出还是在arm上。 现在来移植gdb到dm368上
1、下载gdb源码目前的最高版本的gdb-7.5下载地址http://www.gnu.org/software/gdb/download/
2、解压到合适的文件夹下注意不要放到window与linux共享的目录下即可tar -xvzf gdb-7.5.tar.gz
3、进入gdb-7.5源码目录然后配置编译arm-linux-gdb
我的配置是这样的./configure --targetarm-linux --prefix/opt/dm36x/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/gdb-7.5 -v
target是指编译的目标平台
prefix是指安装编译好的程序目录我将它安装到arm_v5t_le工具链的目录。
这里注意了现在配置编译的不是gdbserver而是gdbserver对应的需要运行在主机pc上的arm-linux-gdb虽然linux上已经有gdb命令但是这个gdb命令式没法跟gdbserver交互的。
编译成功后会在prifix设定的目录下产生arm-linux-gdb可执行程序如图 target_board 和readme是我自己创建的。
4、进入gdb-7.5/gdb/gdbserver目录配置然后交叉编译运行在arm上的gdbserver
4.1在交叉编译gdbserver之前先进行一些设置
添加刚才编译好的arm-linux-gdb到PC linux的PATH中
PATH/opt/dm36x/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/gdb-7.5/bin:$PATH
4.2配置
./configure --targetarm-linux --hostarm-linux
4.3修改config.h
编译是会产生一个错误说找不到sys/reg.h
所以这里修改一下config.h不要去使用reg
#vim config.h //#define HAVA_SYS_REG_H //注释此句
4.4交叉编译
make CCarm_v5t_le-gcc
5、将交叉编译好的gdbserver复制到目标文件系统的/usr/locaol/bin目录下其他地方也可以只要能在shell中找到gdbserver即可 测试
1、随便写一个c文件然后编译
arm_v5t_le-gcc -g test.c
得到a.out复制到目标文件系统中
2、在目标板上执行
gdbserver 192.168.1.227:1234 a.out
192.168.1.227为目标板ip地址1234是没有被占用的tcp端口
意思就是创建一个调试服务器一边主机pc上的arm-linux-gdb能够连接这个服务器来调试a.out
3、在主机pc上执行
arm-linux-gdb a.out
然后在gdb的shell中输入
target remote 192.168.1.227:1234
连接成功后目标板上会打印连接信息如图 至此就可以按照通常gdb的命令调试程序啦
附录1调试时出现的警告
warning: /lib/libc.so.6: Shared library architecture unknown is not compatible with target architecture arm. warning: Could not load shared library symbols for /lib/ld-linux.so.3. Do you need set solib-search-path or set sysroot?
忽略目前没有发现影响什么。
附录2gdb调试手册和gdb调试命令的pdf下载这两篇是我在网上找的觉得比较好
gdb调试手册http://www.kuaipan.cn/file/id_48923272389085122.html
gdb调试命令http://www.kuaipan.cn/file/id_48923272389085121.html