具备全面调试器的Game Boy模拟器?

13
作为回答关于《宝可梦红》中一个故障的技术运作的问题的一部分,我一直在寻找一种使用标准调试器来调试Game Boy ROM的方法。虽然我找到的许多模拟器都有一些调试支持,但迄今为止我找到的没有什么帮助。
背景是,我尝试使用Visual Boy Advance内置功能进行调试,但它们对我要做的事情并不特别有用。VBA缺乏设置断点的能力,而且由于它按帧而不是指令向前步进,因此我无法看到代码在我实际需要时如何执行。虽然VBA说它支持GDB调试,但我完全无法让它工作。我按照说明交叉编译了ARM的GDB,但无法使GDB连接到模拟器(它会识别出有一个程序可以连接,但报告协议已被违反)。我在Windows和Ubuntu Linux上重复了这个过程,结果类似。我的一个朋友和我尝试使用Insight / GDB,但遇到了完全相同的问题。
我还尝试使用NO$GBA调试器,但它拒绝加载我的《宝可梦红色》ROM(然后侮辱我说,无论我尝试做什么都无法解决它,因为文件完全错误)。

此外,我尝试下载这个版本的Visual Boy Advance,声称其中有一个调试器,但由于某些原因,我无法启用调试器。 按照其说明按F11键完全没有任何效果。

我相信我已经尽了我的努力尝试让调试器正常工作,令我惊讶的是,没有一个调试器起作用。 有没有人知道使用标准调试技术调试Game Boy游戏的简单直接的方法? 我主要感兴趣的是能够放置内存写入断点(以查看哪个例程会破坏某些内存部位)。 如果有第一手经验的人可以提供有关如何做到这一点的详细信息,我将不胜感激,因为关于此主题的在线资源似乎非常有限。

4个回答

9
如果你只想调试你的旧Gameboy游戏,你也可以使用bgb,它有多种调试选项,如跟踪、断点、分析器等等。

5

No$GBA适用于GBA游戏; 您需要NO$GMB。请注意,它非常有bug,并且没有注册版本(可能无法合法获得)而变得相当不完整。

bgb是免费的,与No$GMB非常相似,但更加有bug。

VBA应该有一个调试器,但有数百万个不同的版本,所以祝您好运找到正确的版本。


2
“但是更多的bug吗?”我在bgb中没有看到一个bug。那是什么? - Maya

3
请查看网站GbaDev.org 并浏览论坛。这是关于GBA或者GBC问题最好的网站,有很多版本的VBA和no$可以使用。你需要的No$实际上是收费版本,但是Martin Korth多年来一直没有回复邮件,我也不确定它的当前状态。如果需要,我也可以帮你回答一些问题并提供调试器方面的帮助。
我能够访问no$的主网站,下载Windows版本的 no$gmb 并在B/W模式下使用它进行调试-这对你的需要应该足够了。 F12打开rom,F2切换断点,空格跟踪,F3步进,Ctrl-G转到地址(或符号),Ctrl_B允许条件断点(迄今为止你要使用的最强大的特性)。例如,(3000)!会在地址0x3000处设置读/写断点。(0300..03003)!设置一个区间。由于您正在寻找特定的地址更改,因此这正是您所需要的。

2

VBA-M在“工具”菜单下有许多调试工具,包括内存和图块检查器以及反汇编器。它甚至支持GDB。我没有测试任何类似gdbgui或VSCode的GDB支持的前端,所以结果可能有所不同,但其他内置工具看起来相当不错。

前往发布版部分获取适用于您平台的构建版本(Arch Linux还将其放入AUR中,以便在软件包管理器中轻松安装)。

这是在Mac上运行一些工具的截图: enter image description here


我也在Mac/Arch-Linux上使用Wine运行了BGB,但对于我正在处理的特定ROM来说,VBA-M更好,因为它有内存查看器(我需要实际查看SRAM中的字节)。 - konsumer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接