嵌入式arm-linux-gdb和 gdbserver 编译及调试
一:编译安装 arm-linux-gdb
1, 进入一下地址下载安装包 ftp://ftp.gnu.org/gnu/gdb/gdb-6.8a.tar.bz2 下载完成后解压得到gdb-6.8 .
2, 进入目录编译安装 cd gdb-6.8 ./configure --target=arm-linux --enable-sim--prefix=/usr/local/bin
3, make 如果出现错误 cc1: all warnings being treated aserrors 请去掉相应Makefile 中的-Werror 则可以顺利编译通过。
4, make install
二: 编译gdbserver
1,cd gdb-6.8/gdb/gdbserver
2,./configure --target=arm-linux --host=arm-linux
3,make这样在gdb-6.8/gdb/gdbserver目录下就生成了一个gdbserver可执行文件,拷贝到目标开发板上
三:简单测试例程
1, 将gdbserver拷贝到目标开发板上 我的目标版地址是192.168.100.199 测试程序为 hello
./gdbserver 192.168.100.199:2345 hello (如果程序需要传递参数 ./gdbserver 192.168.100.199:2345 hello LOG_FILE 3)
目标版显示
Process segmentationfaultcreated; pid = 22934
Listening on port 2345
2,pc机上我的是虚拟机,pc机静态IP设置192.168.100.199,虚拟机采用NAT方式联网。
1 ,arm-linux-gdb hello
2,target remote 192.168.100.66:2345
执行上条指令后目标版显示
Processsegmentationfault created; pid = 22934
Listening on port2345
Remote debuggingfrom host 192.168.100.199
接下来可以用gdb 命令调试 目标版程序。
四:core 文件分析
1,ulimit –c 默认是0 不会生成core 文件,ulimit –c10000(kb) 设置core文件大小
如果目标版程序崩溃则会在执行程序的目录下成成core文件。
例如segmentationfault 程序段错误 生成core ,则把两文件和源文件 拷贝到同一目录下
arm-linux-gdb ./segmentationfault core 则可以定位错误,例如 可以输入bt 或where
五:可能需要安装下面的工具
sudo apt-get install texinfo
sudo apt-get install libncurses5-dev
sudo apt-get install m4
sudo apt-get install flex
sudo apt-get install bison