【问题标题】:Game Boy emulator with a full debugger?带有完整调试器的 Game Boy 模拟器?
【发布时间】:2011-10-19 14:55:57
【问题描述】:

作为回答this question about the technical workings of a glitch in Pokémon Red 的工作的一部分,我一直在寻找一种使用标准调试器来调试Game Boy ROM 的方法。尽管我发现的许多模拟器都支持调试,但到目前为止我还没有发现任何有用的东西。

作为背景,到目前为止,我已经尝试使用 Visual Boy Advance 的内置功能进行调试,但它们对于我正在尝试做的事情并不是特别有用。 VBA 缺乏设置断点的能力,并且由于它在帧级别而不是指令级别上向前推进,所以当我真正需要它时,我无法看到代码是如何执行的。虽然 VBA 说它支持 GDB 调试,但我完全无法让它工作。我尝试按照说明为 ARM 交叉编译 GDB,但无法让 GDB 连接到模拟器(它会识别有要连接的程序,但报告违反了协议)。我在带有 Cygwin 的 Windows 和 Ubuntu Linux 上都以类似的成功重复了这一点。我和一个朋友尝试使用 Insight/GDB,但遇到了完全相同的问题。

我也尝试使用 NO$GBA 调试器,但它拒绝为 Pokémon Red 加载我的 ROM(然后侮辱我说我无法尝试修复它,因为该文件完全没有问题错了)。

此外,我尝试下载 Visual Boy Advance 的 this version,声称其中包含调试器,但由于某种原因,我无法启用调试器。按照它的说明按F11没有任何效果。

我相信我已经尽了我的职责,试图让调试器正常工作,但令我惊讶的是,没有一个能正常工作。有谁知道使用标准调试技术调试 Game Boy 游戏的简单、直接的方法?我最感兴趣的是能够在内存中设置写断点(以查看哪些例程正在破坏内存的某些部分)。如果有第一手经验的人可以提供有关如何执行此操作的详细信息,我将不胜感激,因为有关该主题的在线资源似乎非常有限。

【问题讨论】:

    标签: debugging reverse-engineering gameboy


    【解决方案1】:

    查看网站GbaDev.org 并查看论坛。这是网上关于 GBA 甚至 GBC 问题的最佳地点。我可以告诉你,VBA 有很多版本,而且没有任何版本。您想要的 No$ 在技术上是付费版本,但 Martin Korth 多年来一直没有回复电子邮件或任何东西,我也不确定它的状态了。如果您愿意或在调试器方面为您提供帮助,我也可以亲自为您解答一些问题。

    我可以去no$主网站,下载windows版的no$gmb,在B/W模式下运行时用它来调试——应该足够你需要了. F12 打开 ROM,F2 切换断点,空格跟踪,F3 跳过,Ctrl-G 带你到一个地址(或符号),Ctrl_B 允许条件断点(迄今为止你使用的最强大的功能。)例如,(3000)!将在地址 0x3000 上设置读/写断点。 (0300..03003)!设置在一个范围内。当您正在寻找特定的地址更改时,这就是您想要的。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        No$GBA 适用于 GBA 游戏;你想要 NO$GMB。请注意,它有很多错误,而且没有注册版本(可能无法合法获得)相当残废。

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

        VBA 应该有一个调试器,但那里有一百万个不同的版本,所以祝你找到合适的。

        【讨论】:

        • “但更麻烦”?我还没有在 bgb 中看到一个错误。这是什么?
        【解决方案4】:

        VBA-M 在“工具”菜单下有一堆调试工具,包括内存和磁贴检查器和反汇编器。它甚至支持 GDB。我没有测试任何前端,比如gdbgui,或者 VSCode 的 GDB 支持,所以 YMMV,但其他内置工具看起来还不错。

        转到releases section 为您的平台构建版本(arch linux 在 AUR 中也有它,以便在包管理器中轻松安装。)

        这里它在 Mac 上运行一些工具:

        【讨论】:

        • 我还让 BGB 在 mac/arch-linux 上的 wine 中运行,但是对于我正在处理的特定 ROM,VBA-M 更好,因为它有内存查看器(我实际上需要查看 SRAM 中有哪些字节。)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多