游戏男孩模拟器与一个完整的调试器? [英] Game Boy emulator with a full debugger?

查看:123
本文介绍了游戏男孩模拟器与一个完整的调试器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为我所做的工作的一部分,我一直在回答关于口袋妖怪中的故障技术工作的问题红色,我一直在寻找一种使用标准调试器来调试Game Boy ROM的方法。虽然我发现许多仿真程序对调试有一些支持,但我迄今为止发现的没有任何帮助。

As part of the work I've been doing to answer this question about the technical workings of a glitch in Pokémon Red, I've been looking for a way to use a standard debugger to debug a Game Boy ROM. Although many of the emulators I've found have some support for debugging, nothing I've found so far has been helpful.

作为背景,截至目前为止尝试使用Visual Boy Advance内置功能进行调试,但对我正在尝试的功能并不特别有用。 VBA缺乏设置断点的能力,并且由于它在帧级别而不是指令的前提下,我无法看到代码在实际需要时如何执行。尽管VBA表示支持GDB调试,但我完全无法使其正常工作。我试图根据说明交叉编译GDB,但不能让GDB连接到仿真器(它会认识到有程序要连接,但报告说该协议已被违反)。我在Windows中使用Cygwin和Ubuntu Linux都重复了这一点。一个朋友和我试图使用Insight / GDB,但遇到了完全相同的问题。

As a background, as of now I have tried to use the Visual Boy Advance built-in features to do debugging, but they aren't particularly useful for what I'm trying to do. VBA lacks the ability to set breakpoints, and since it steps forward at the level of frames rather than instructions I'm unable to see how the code is executing when I actually need it to. Although VBA says that it supports GDB debugging, I have been completely unable to get it working. I tried cross-compiling GDB for ARM as per the instructions, but could not get GDB to connect to the emulator (it would recognize that there was a program to connect to, but reported that the protocol had been violated). I repeated this with similar success in both Windows with Cygwin and on Ubuntu Linux. A friend and I tried to use Insight/GDB, but ran into exactly the same problems.

我也尝试使用NO $ GBA调试器,但拒绝加载我的ROM用于口袋妖怪红色(然后侮辱我,说没有什么我可以尝试做的将修复它,因为文件是平坦的错误)。

I also tried to use the NO$GBA debugger, but it refused to load my ROM for Pokémon Red (and then insulted me by saying that nothing I could try to do would fix it, as the file was just flat-out wrong).

另外,我尝试下载这个版本的Visual Boy Advance,声称拥有一个调试器在其中,但由于某种原因我无法获得启用调试器。按照F11按照说明进行操作并不会产生任何影响。

Additionally, I tried downloading this version of Visual Boy Advance that claims to have a debugger in it, but for some reason I can't get it to enable the debugger. Pressing F11 as per its instructions has no effect whatsoever.

我相信我做了尽职调查,试图让调试器工作,我很惊讶,他们中的一个已经工作了。有没有人知道使用标准调试技术来调试Game Boy游戏的简单直接的方法?我主要感兴趣的是能够写入内存写断点(看看什么程序会破坏内存的某些部分)。如果有这样做的第一手经验的人可以提供有关如何做这件事情的细节,我将非常感激,因为在线资源在这个问题上似乎很有限。

I believe that I've done my due diligence trying to get a debugger working, and I'm surprised that not a single one of them has worked. Does anyone know of a simple, straightforward way to debug Game Boy games using standard debugging techniques? I'm interested mostly in being able to put in memory write breakpoints (to see what routine is clobbering certain parts of memory). I would really appreciate it if someone with first-hand experience doing this could provide details on how to do this, as online resources on the subject seem pretty limited.

推荐答案

查看网站 GbaDev.org ,并查看论坛。这是GBA甚至GBC问题的最佳网站。我可以告诉你,有很多版本的VBA,没有$ out和about。你想要的No $在技术上是一个付费的版本,但马丁Korth几年没有回复电子邮件或任何东西,我不知道它的状态了。如果您希望或帮助您调试器,我也可以回答一些问题。

Check out the site GbaDev.org and look on the forums. This is the best spot on the web for GBA or even GBC questions. I can tell you that there are many versions of VBA and no$ out and about. The No$ you want was technically a pay for version, but Martin Korth hasn't been answering emails or anything for years now and I'm not sure of its status anymore. I can also answer some questions for you personally if you'd like or help you with the debugger.

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

I was able to go to the no$ main website, download the windows version of no$gmb, and use it to debug when run in B/W mode - should be sufficient for you needs. F12 opens roms, F2 toggles break points, space traces, F3 steps over, Ctrl-G takes you to an address (or symbol), and Ctrl_B allows conditional break points (by far the most powerful feature for you to use.) For instance, (3000)! would set a read/write breakpoint on address 0x3000. (0300..03003)! sets on a range. As you are looking for specific address changes, this is what you want.

这篇关于游戏男孩模拟器与一个完整的调试器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆