I’ve been trying to experiment with ConsoleZLR (which can be used for debugging ZMachine games), but I don’t know if there’s a way to create the required debug file with the Inform compiler.
Can anyone help with either:
any pointers to a tool to convert the XML-debug-file to the binary one needed by ConsoleZLR
an example of a Inform6 correct debug file along with the source code for the game; this way I’ll at least have something to use to try out
(Ah, found I could a game with a very-old inform6 compiler, so I have a debug file to play with. But if anyone knows any way to generate binary debug files from the modern compiler, or a tool to convert them, please let me know.)
ZConvert 0.1 (1st May 2026) by Henrik Åsman, (c) 2026
Usage: zconvert [switches] [filename]
A collection of conversion scripts for the z-machine.
-bz, blorb_to_z Extract ZCOD-chunk from zblorb-file.
-h, --help, /? Show this help.
-o Specify output filename (default is <filename>.out).
-xd, --xml_to_dbg Converts a XML debug file to the binary DBG format.
Description of XML debug-format: https://gist.github.com/EmacsUser/3960569
Description of DBG debug-format: https://inform-fiction.org/source/tm/chapter12.txt
filename Name of file to convert (source).
Report bugs/suggestions to: heasm66@gmail.com
ZConvert homepage: https://github.com/heasm66/zconvert
Here is a short instruction for those that want to test this with ConsoleZLR.
ConsoleZLR
ZLR is a .NET implementation of the Z-machine. Originally developed as a proof of concept for using JIT to speed up complex interactive fiction games, ZLR continues to be developed for use as a debugger and integration test engine in ZILF. Get ConsoleZLRhere. I don’t know if @vaporware keeps any pre-compiled versions, but I have one for win-x64 here).
Instructions
Setting up a debug session with two console windows
Compile an Inform6 file with the -k switch (output debugging information to “gameinfo.dbg”).
Convert it with ZConvert.
Start two consoles windows (the second as administrator)
It’ll break on the first instruction. Type h or ? for the command list.
reset - Restart the game
step - Execute one instruction, entering function calls
over - Like step, but instead of entering a function call, run until the function returns or a breakpoint is hit
stepline, overline - Like step and over but for source lines instead of instructions
up - Run until the current function returns or a breakpoint is hit
run - Run until the game ends or a breakpoint is hit
break, clear - Set or unset a breakpoint. The argument can be a routine name (with optional offset, like PARSER+3), numeric address, or a source line reference like full path to source file:1234
breakpoints - List active breakpoints
tracecalls - Toggle printing a message for every function call
backtrace - Print the call stack
locals - List local variables and stack values for the current call frame
globals - List global variables
print - Evaluate an expression, using ZIL-like syntax. You can make changes by calling FSET, MOVE, SETG, etc.
showobj - Print the details of an object. The object is specified using the same ZIL-like syntax as print; in particular, you’ll need a comma if the object is in a global variable (showobj ,WINNER).
tree - Print the tree of all objects, or if an argument is given, the object tree with the given object as its root. The argument is in the same ZIL-like syntax as above.
quit - Exit
jump - Change the PC to a new address.
ZLR only works with binary debug info files (not XML).