主要观点:作者多年来断断续续开发 Gameboy 模拟器,调试过程中使用 blargg 套件等测试 ROM,但测试失败时难以定位 bug。为此添加了dump()
函数,后又编写了gbtracer
程序,通过dlopen
模拟器并运行记录状态到临时文件,利用模拟器中的一些特定函数来实现,如gbtracer_set_*
函数在模拟器中为空但在追踪器中有定义,gbtracer_set_pc
时追踪器写入临时文件,输出格式可配置且无需重新编译模拟器,示例展示了其运行效果,但需将模拟器构建为共享对象并使用特定标志。
关键信息:
- 多年开发 Gameboy 模拟器且都有问题。
- 添加
dump()
函数及gbtracer
程序。 - 相关函数在模拟器和追踪器中的定义及作用。
- 临时文件记录状态的格式及内容。
- 需构建共享对象的要求。
重要细节: main.cpp
中添加的函数用于向追踪器提供模拟器状态。gbtracer.c
中定义的函数用于处理状态记录和输出格式。- 示例展示了
gbtracer
运行后的输出内容。 - 提到相关的gbit用于差分测试。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。