One of the huge advantages of Minoca OS is its source-level debugger. The debugger is baked into the kernel, which means that there is no need to re-compile any source in order to diagnose an issue. Remember littering your code with print-statements? No more. The Minoca Debugger can debug at the firmware, kernel, and application layers, so wherever you're working in the stack, it would be a good idea to familiarize yourself with Minoca's debugging tools.

The Minoca Debugger comes in three flavors. There are the Windows GUI and console versions and then there is the Minoca OS native version. You'll find the Windows executables in the Minoca/Debug directory of the Minoca OS Starter Pack or in the root of the Minoca Debugger package. The GUI version is named debugui.exe and the console version is debug.exe. The native Minoca OS debugger, which can be used for user mode debugging from within the OS, is located at apps/bin/debug in the root of the system volume.

By default, the run.bat script in the x86 PC package will launch the Minoca Debugger simultaneously with Qemu, so no extra setups are required to debug on Qemu. The two applications communicate over a named pipe: check out the run.bat script to see how the "-serial" option is used on Qemu and the "-k" option is used with debugui.exe.

Getting debugging up and running on real hardware is a bit more involved. If you're looking to debug one of the supported platforms, head over to the Platform Debugging page.

To get familiar with the debug commands available in the Minoca Debugger, visit the reference page. There you'll find a complete list of commands.

The Minoca Debugger comes complete with an integrated profiler. Track where the system is spending time or which modules are using the most memory resources using the profiler. Learn more from the profiling introduction.