ChChorOS-1-GDB

本章是 AArch64 qemu gdb 调试的基础。

启动调试

1
2
sudo make qemu-gdb
sudo make gdb

gdb调试命令

设置断点

1
b stack_test

查看断点

1
info breakpoint

清除断点

1
clear location

location 为某一行代码的行号或者某个具体的函数名。

1
delete [breakpoints][num]

删除某一个特定的断点或全部断点。
禁用/使能断点

1
2
disable [breakpoints][num]
enable [breakpoints][num]

查看变量

1
info variables

查看寄存器

1
2
info register sp
info register fp // $x29

查看内存

1
x/32xg $x29

命令格式: x /nfu

  • n 是要显示内存单元的个数

  • f 表示显示格式

    • x 十六进制
    • d 十进制
    • u 十进制无符号整型
    • o 八进制
    • t 二进制
    • i 指令地址格式
    • c 字符串格式
    • f 浮点格式
  • u 一个地址单元的长度

    • b/h/w/g,分别表示单字节、双字节、四字节、八字节

二进制分析

查看ELF头部信息

1
readelf -h build/kernel.img

查看ELF包含的程序段

1
readelf -S build/kernel.img

查看ELF的LMA和VMA

1
objdump -h build/kernel.img

汇编单步调试

1
si

实时查看寄存器变化

1
打开gdb之后运行 layout regs