调试环境准备
实验操作系统:ubuntu 18.04.5
。准备如下环境:
- 下载
huawei liteos
, 并按照官方文档。编译realview-pbx-a9
工程,生成调试镜像。参考:Liteos Doc。本次实验基于commit id 为:ec2f62b79514c2edce90eb979a624ec815b6a391
。 - 安装
qemu
,本次实验安装的qemu
版本为qemu 7.0.0
。 参考:QEMU 安装。 - 安装
gdb-multiarch
,安装方法:sudo apt-get install gdb-multiarch
。本次实验版本为:
gdb 调试方法
-
用
qemu
运行realview-pbx-a9
程序qemu-system-arm -machine realview-pbx-a9 -smp 4 -m 512M \ -kernel out/realview-pbx-a9/Huawei_LiteOS.bin -nographic \ -S -s
-machine:设置QEMU要仿真的虚拟机类型。
-smp:设置guest虚拟机的CPU的个数。
-m:为此guest虚拟机预留的内存大小,如果不指定,默认为128M。
-kernel:设置要运行的镜像文件(包含文件路径)。
-nographic:以非图形界面启动虚拟机。
最后的-S -s
就是让系统停止,并监听1234端口,等待gdb链接调试。
-
用
gdb-multiarch
连接镜像gdb-multiarch --tui
-
连接
qemu gdb server
set architecture arm file Huawei_LiteOS.elf target remote localhost:1234 break main c
效果如下图所示:
程序就会停到main函数,后续都是一些gdb操作了。这里就不再追溯。