Qemu模拟ARM之gdb调试应用程序
系统:Ubuntu16.04.4 32bit
交叉编译器:arm-linux-gnueabihf-gcc
VMware:VMware Workstation 14 Pro
u-boot:u-boot-2018.03
linux:linux-4.16.2
1.下载gdb源码
wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.tar.xz
2.交叉编译gdb
tar xvf gdb-8.1.tar.tar
cd gdb-8.1/gdb/gdbserver/
./configure --host=arm-linux-gnueabihf
make -j4
3.调试程序
将生成的gdbserver拷贝到目标板上
在目标板上运行gdbserver
#192.168.1.111宿主机的ip
./gdbserver 192.168.1.111:5000 test
在宿主机上连接目标板的gdbserver
arm-linux-gnueabihf-gdb test
#192.168.1.222目标板的ip
(gdb) target remote 192.168.1.222:5000
4.下载cgdb源码
wget https://cgdb.me/files/cgdb-0.7.0.tar.gz
5.编译cgdb
tar xvf cgdb-0.7.0.tar.gz
cd cgdb-0.7.0/
./configure -prefix=/home/qemu/qemu/cgdb-0.7.0/_install
make -j 4
make install
出现错误:
configure: error: CGDB requires curses.h or ncurses/curses.h to build.
解决方案:
sudo apt-get install libncurses5-dev libncursesw5-dev
出现错误:
configure: error: Please install makeinfo before installing
解决方案:
sudo apt-get install autoconf automake
sudo apt-get install texinfo
sudo apt-get install libreadline6 libreadline6-dev
出现错误:
configure: error: Please install flex before installing
解决方案:
sudo apt-get install flex
6.cgdb远程调试
目标板执行gdbserver:
./gdbserver 192.168.1.111:5000 app
使用-d 参数指定目标GDB
./cgdb -d arm-linux-gnueabihf-gdb app
(gdb) target remote 192.168.1.222:5000
7.调试命令
cgdb窗口命令
让用户进入gdb模式:i
让用户进入TTY模式: I
代码窗口
向上翻一页:ctrl b
向上翻半页:ctrl u
向下翻一页:ctrl f
向下翻半页:ctrl d
移动到文件顶部:gg
移动到文件底部:G
从当前光标向下搜索:/
从当前光标向上搜索:?
打开文件对话框窗口(用户查找):o
cgdb命令窗口的调整
缓慢缩小:-
缓慢增大:=
快速缩小:shift -
快速增大:shift +
参考:https://github.com/leeyiw/cgdb-manual-in-chinese/blob/master/SUMMARY.md