Welcome, XQEMU Developers!¶
XQEMU Development Chat: The project has a dedicated development-centric
IRC channel at
#xqemu on irc.freenode.net. The XboxDev Discord server has a
#xqemu channel as well, and these channels are bridged together. Developers
are free to chat from both IRC and Discord.
XQEMU User Chat: XQEMU user-centric discussion (general, help, multiplayer, showcase, etc.) takes place on the XQEMU Discord Server.
This project is hosted on GitHub at github.com/xqemu/xqemu.
Building From Source Code¶
For directions on how to build XQEMU from source, please refer to this page.
Debugging Guest Code¶
- QEMU can host a gdb stub! Launch with
-s -S, and with gdb run
target remote localhost:1234
- Protip: You can also attach to it with IDA if you're so inclined. You can then load in a database if you export it as a IDC script!
- XQEMU can emulate a XDK serial port (which with a debug bios hosts KD, as in this and this)! Launch with something like
-device lpc47m157 -serial unix:/tmp/xserial,server. With some effort you can wrestle the unix socket into a vm for with WinDbg. There's also a very barebones perl KD client in scripts/windpl
- apitrace is useful for tracking down rendering bugs.
Debugging XQEMU Itself¶
Depending on the task at hand, it may be necessary to debug XQEMU itself.
Create a project, edit the "Scheme" to run the xqemu binary, then click the run button. Xcode has a nice GUI for analyzing the stack frame and looking at local variables to quickly track down bugs. You can also attach to running processes.
GDB works of course. Eclipse can also be used for those wanting a graphical source-level debugging solution.
People have reported success with the 'COMPLEX 4627' modified debug bios. It's convenient to note that this bios does not necessarily require a populated hard disk image to load an application from DVD (though an empty drive still needs to be attached), so you can skip the next step in some cases.
v1.0.2 1M dump: MD5 (Complex_4627Debug.bin) = 19b5c6d3d42a707bba620634fe6d4baf
1MB dump: MD5 (complex_4627debug.bin) = e8dd61cc6abdbd06aac185e371312dc1