# BREAD BIOS 实模式调试器

> 可注入的 x86 实模式调试器，用于在真实硬件或虚拟机上调试传统 BIOS 代码、引导代码和 DOS 程序。放入目标代码中的 16 位汇编小程序会安装中断处理程序、让处理器单步执行，并通过串口与 Linux 上的桥接程序通信；桥接程序把这些简化报文转换为 GDB 远程协议，使 GDB 能读写内存和寄存器、单步、继续执行，并可同时设置一个硬件断点和一个观察点。配套脚本可将地址与标签列表转换为供 GDB 加载的最小 ELF 符号文件。

- 类型：工具
- 目标：二进制 · 固件
- 类别：调试与动态分析
- 关联：基础工具
- 来源复核于：2026-10-20
- 收录于：2026-11-02
- 原始资源：<https://github.com/Theldus/bread>
- 一手来源：<https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/bread-bios-debugger/>
- 记录 JSON：<https://awesomerea.org/resources/bread-bios-debugger/record.json>
- 英文版：[English](https://awesomerea.org/resources/bread-bios-debugger/index.md)

## 使用条件与局限

- 项目未发布任何版本。所审阅的 master 提交（2025-10-21）修复了中断模式下的 EIP 处理问题；上一次代码改动是 2023-10-19 加入 symbolify 工具。构建需要 Linux 主机、GNU Make、GCC、Clang 或 TCC 等 C 编译器以及 NASM。默认构建以轮询方式读取 UART，会占满 CPU；UART_POLLING=no 可改为中断模式，但由于中断并非总是启用，该模式不是默认选项。
- 每个目标都需要修改 dbg.asm：调整 ORG 和返回方式，并恢复为调用调试器而被替换的指令；汇编得到的 dbg.bin 随后放入使用者自有的 BIOS ROM 镜像，或作为 DOS .COM 程序在最小 FreeDOS 或 DOS 启动软盘中运行。在真实硬件上调试需通过串口连接 Linux 主机。仓库不附带任何 ROM；symbols/ami_ipm41d3.txt 是作者为一款 PCWare IPM41-D3 AMI 传统 BIOS 整理的符号名，文件头说明这只是作者自己的理解，并非官方或泄露的符号。
- README 列出的限制包括：被调试代码并不知道调试器存在，因此切换到保护模式、修改 IDT 或缺少可用栈都会使调试器失效；BIOS 代码无法从启动块开始跟踪，因为调试器需要内存已完成初始化；热重启虽可重新走一遍初始化流程，但路径可能与冷启动不同。虚拟机需支持调试寄存器：Bochs 需启用其 x86 调试器编译，QEMU 需启用 KVM；仓库自带的 qemu 目标即启用 KVM，并使用由随附引导扇区和调试器生成的软盘镜像。
- 仓库没有测试或 CI；README 链接了一段修改 CPU 名称字符串的演示视频。采用 MIT 许可证，作者为 Davidson Francis；被调试的固件和程序仍有各自权利。

## 一手来源

1. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/README.md>
2. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/README.md#L99-L134>
3. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/README.md#L136-L282>
4. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/Makefile>
5. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/dbg.asm>
6. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/symbolify.py>
7. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/.gdbinit>
8. <https://github.com/Theldus/bread/blob/700807ef312db8bb765f88eb4f702bc22b7b2858/LICENSE>
9. <https://github.com/Theldus/bread/commit/700807ef312db8bb765f88eb4f702bc22b7b2858>

## 同分区更多条目：原生二进制

- [Mergen 反混淆 LLVM IR 提升器](https://awesomerea.org/zh/resources/mergen/index.md) · 工具
- [readpe（原名 pev）PE 文件分析工具集](https://awesomerea.org/zh/resources/readpe/index.md) · 工具
- [malware-jail JavaScript 恶意代码沙箱](https://awesomerea.org/zh/resources/malware-jail/index.md) · 工具
- [gxpc XPC 通信嗅探工具](https://awesomerea.org/zh/resources/gxpc/index.md) · 工具
- [Manticore 符号执行工具](https://awesomerea.org/zh/resources/manticore/index.md) · 工具
- [Ghidra Ninja Ghidra 脚本合集](https://awesomerea.org/zh/resources/ghidra-ninja-scripts/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
