利用QEMU+GDB在ubuntu系统中配置MIPS调试运行环境
程序员文章站
2022-07-05 16:02:45
...
在ubuntu系统中配置MIPS调试运行环境
注:系统环境为ubuntu 18.04.
安装QEMU和GDB
QEMU是用于各种体系结构的仿真器。通常,它用于模拟整个PC(即运行虚拟机)。对于调试单个程序,这不是必需的。在Linux上,可以使用QEMU用户空间仿真。
安装qemu
$ sudo apt-get install qemu qemu-user qemu-user-static
此外,默认情况下为Ubuntu和类似操作系统安装的GDB对其他体系结构一无所知。可以利用gdb-multiarch包
$ sudo apt-get install gdb-multiarch
binfmt可以使用该包查看文件的类型,并自动调用正确的解释器。在我们的例子中,它将看到您正在尝试运行一个低端的MIPS(mipsel)二进制文件并调用qemu-mipsel。
$ sudo apt-get install 'binfmt*'
安装libraries
包含mipsel运行所选二进制文件所需的所有库的软件包:
$ sudo apt-get install libc6-mipsel-cross # For MIPS-EL
构建程序,则需要交叉编译器。
$ sudo apt-get install gcc-mipsel-linux-gnu
最后,我们需要binfmt确定mipsel二进制文件在哪里。
$ sudo mkdir /etc/qemu-binfmt
$ sudo ln -s /usr/mipsel-linux-gnu /etc/qemu-binfmt/mipsel # MIPSEL
现在可以在系统上运行二进制文件
效果:
使用GDB调试
需要启动qemu-mips以便公开GDB存根,然后从GDB连接
1.首先打开一个终端启动qemu-mips
(12345是一个连接端口,可以使用任意)
qemu-mipsel -g 12345 ./bomb
2.打开另一个终端利用gdb-multiarch进行调试
gdb-multiarch ./bomb
并依次输入
(gdb) set arch mips
(gdb) set endian little
(gdb) target remote localhost:12345
这样就可以继续利用gdb调试
一些关于phase_1调试过程的demo:
设置断点之后执行r命令后输入continue,在另一个终端运行,此终端用来调试。
继续调试:
上一篇: STM32-串口IAP升级