auxtools DebuggerDebug BYOND worlds in VS Code with auxtools. Supports breakpoints, stepping, runtime errors, sleeping proc stacks, variable inspection, expression evaluation, disassembly and experimental hot reload. The launcher loads the debugger without changes to your world's source. Windows supports DreamSeeker and DreamDaemon; Linux supports DreamDaemon. Install a DM language extension alongside it for syntax highlighting and language features. Start debuggingBuild your world, then press F5. The extension runs the Run Without Debugging (Ctrl+F5) disables breakpoints and stepping while keeping
hot reload enabled. You can also set To save a configuration, add it to
Linux DreamDaemon and Windows Stop requests shutdown through Windows DreamDaemon may prompt before running in trusted mode. Select "Don't ask me this again" to suppress that prompt. BreakpointsClick the gutter for a line breakpoint. Use Add Function Breakpoint for a proc
path:
With hot reload enabled, breakpoints added to unsaved text remain unverified until the file is saved and reloaded. Existing breakpoints continue to refer to the running code. After reload, they follow their statements as lines move. Without hot reload, breakpoints refer to the source used to build the world. If the file has changed since the build, the displayed line may no longer match; the Debug Console warns about this. Loaded Scripts, available from the Run and Debug view's ... menu, lists
files named in the world's debug info and BYOND's Sleeping procsWhile paused, the Call Stack view lists the running proc followed by sleeping
procs. Inspect their frames and variables or evaluate expressions as usual.
Stepping a sleeping proc waits until it wakes. The view lists up to 100 sleeping
procs by default; change Data breakpointsWhile paused, right-click a variable and choose Break on Value Change. Execution pauses just after its value changes, usually on the next line. The Debug Console reports the old and new values. You can watch object variables, list entries, globals, locals and arguments.
Frame variables are watched only for that call. Watching a variable containing a
list detects reassignment of the list; watch an entry to detect changes within it.
Data breakpoint conditions use Watches are checked between instructions, including engine changes such as atom movement. They slow execution while enabled. Remove them when no longer needed. Runtime errorsIn the Breakpoints view, Runtime errors pauses on uncaught runtime errors and
uncaught throws. It is enabled by default. Caught runtime errors also pauses
inside Use the filter's pencil icon to match message substrings. Separate alternatives
with commas and prefix exclusions with Errors are still printed when no breakpoint pauses for them. Source locations in the Debug Console link to the corresponding file and line. Variables and evaluationThe Variables view shows the selected frame's locals and arguments, including
Set Value accepts an expression evaluated in the selected frame. Copy as
Expression and Add to Watch use an access expression such as
Watches, conditions and the Debug Console accept DM expressions such as
Expressions can assign variables and call procs. Watch expressions run at every stop, so their side effects can change the world. The Debug Console also accepts proc bodies with declarations, loops and
The result is the returned value, or the final expression. Bodies can modify frame variables. Evaluation is aborted if it sleeps or calls a sleeping proc. Source Hovering source code evaluates a single expression in the selected frame without
calling procs or assigning values. The Debug Console completes visible variables
and procs, including members after
DisassemblyWhile paused, right-click a stack frame and select Open Disassembly View. The view shows dmasm instructions, hexadecimal words, source lines and the current instruction. A frame still running pre-reload bytecode shows that bytecode without source lines, since its source text is no longer current. Instruction addresses encode the proc ID, retained bytecode buffer ID and word offset as
Click beside an instruction address to set a breakpoint. It must be an instruction boundary in the proc's current bytecode. Instruction breakpoints support conditions and hit counts and survive world reboots. With this view focused, Step Over advances one instruction in the frame, running calls to completion. Step Into advances to the next executed instruction, entering a callee if needed. Step Out returns to the caller. Hot reload (experimental)Saving a source file reloads supported changes, including during Run Without Debugging. The Debug Console reports results and changes requiring a rebuild. Reloads are restored after reboot. Supported changes include proc bodies, new procs and verbs, removals, new types
(including mobs), new variables and static locals, variable types and defaults,
parameters, Changes requiring a rebuild include parent types; declaration flags such as
Active calls finish on their original code. Existing instances retain their verbs
and built-in values. Computed defaults apply to new instances. New computed
variables are null on existing instances, and their Breakpoints follow statements after edits from VS Code, other editors or checkouts. The VS Code extension reports unsaved files to the launcher. Other DAP clients that do not report this state use on-disk line numbers for new breakpoints. Attach to a running worldUse auxtools: Attach to a running world to select a world started by the launcher. Multiple VS Code windows can attach simultaneously, each with independent breakpoints. Any session can resume a paused world. Disconnecting leaves an attached world running. If it is paused, it stays paused while other debugging sessions remain. The Debug Console also reports reloads performed by other launchers.
Attach options are Settings
LicenseGPL-3.0. See LICENSE. The extension bundles the launcher and debug server. |