Qemu模拟ARM之gdb调试应用程序

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源码

http://ftp.gnu.org/gnu/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源码

http://cgdb.github.io/

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

猜你喜欢

转载自blog.csdn.net/wyy626562203/article/details/80205447