如何让GDB识别默认操作数大小以调试多模式内核代码
多模式内核调试:GDB反汇编乱码及替代工具问题
问题背景
- 自制内核包含32位保护模式、16位保护模式、16位实模式代码,基于Qemu模拟i686架构运行
- 模式切换逻辑可正常执行,但GDB的
disassemble命令及gdb-dashboard的反汇编始终默认采用32位操作数大小,导致16位代码的反汇编输出乱码
当前调试困境
- 只能同时对照Qemu指令日志、内核二进制dump文件(16位代码解码效果差,需单独打开对应文件)及汇编源码,仅用GDB查看寄存器值、内存值等机器状态,调试效率极低
- 尝试执行
set architecture i8086命令切换架构,但无效果,无法得到正确的16位指令反汇编结果
需求与疑问
- 如何让GDB针对不同模式的代码输出正确的反汇编结果?
- 是否有更适合多模式x86内核的调试工具?比如听说Bochs的调试支持更友好,是否属实?
内容的提问来源于stack exchange,提问作者Self learning student
相关产品推荐
相关产品推荐

