Debugging 带有完整调试器的游戏机模拟器?

Debugging 带有完整调试器的游戏机模拟器?,debugging,reverse-engineering,gameboy,Debugging,Reverse Engineering,Gameboy,作为我回答问题所做工作的一部分,我一直在寻找一种使用标准调试器调试Game Boy ROM的方法。尽管我发现许多模拟器都支持调试,但到目前为止,我没有发现任何有用的东西 作为背景,到目前为止,我已经尝试使用VisualBoyAdvance的内置功能进行调试,但它们对于我正在尝试的工作并不是特别有用。VBA缺乏设置断点的能力,而且由于它是在帧级别而不是在指令级别前进,所以当我实际需要时,我无法看到代码是如何执行的。虽然VBA说它支持GDB调试,但我完全无法让它工作。我尝试按照说明交叉编译用于ARM

作为我回答问题所做工作的一部分,我一直在寻找一种使用标准调试器调试Game Boy ROM的方法。尽管我发现许多模拟器都支持调试,但到目前为止,我没有发现任何有用的东西

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

我还尝试使用NO$GBA调试器,但它拒绝为《神奇宝贝红》加载我的ROM(然后侮辱我,说我所能做的一切都无法修复它,因为文件完全错了)

此外,我还尝试下载了VisualBoyAdvance,它声称其中包含调试器,但由于某些原因,我无法让它启用调试器。按F11的说明按它没有任何效果

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

请查看该网站并查看论坛。这是网上回答GBA甚至GBC问题的最佳地点。我可以告诉你,VBA有很多版本,没有现成的美元。从技术上讲,你想要的No$youwant是一个付费版本,但马丁·科思(martinkorth)已经多年没有回复电子邮件或其他任何东西了,我也不确定它的状态。如果您愿意或帮助您使用调试器,我也可以亲自回答一些问题


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

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

没有$GBA是用于GBA游戏的;你不想要$GMB。请注意,它有很多bug,并且没有注册版本(这可能不可能合法地获得)就相当残废

bgb是免费的,非常类似于零美元的GMB,但更像是四轮马车

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

在“工具”菜单下有一系列调试工具,包括内存和磁贴检查器和反汇编程序。它甚至支持GDB。我没有测试任何前端,比如VSCode的GDB支持,所以YMMV,但是其他内置工具看起来相当不错

转到为您的平台进行构建(arch linux在AUR中也有它,以便在package manager中轻松安装。)

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

“但即使是四轮马车”?我在bgb中一个bug都没见过。这是什么?我还让BGB在mac/arch linux上的wine中运行,但对于我正在开发的特定ROM,VBA-M更好,因为它有内存查看器(我需要实际查看SRAM中的字节)