Debugging is the process of analyzing the execution and state of a software program to locate and remove defects. Traditional debugging tools provide facilities for execution control so that programmers can execute programs in a controlled environment and either display the current state of program data or evaluate expressions in the source language that was used to develop the program. Unfortunately, these techniques are often insufficient for debugging complex software systems.
The following examples describe complex software systems that MDB is well suited to examine and debug:
An operating system, where bugs might not be reproducible and program state is massive and distributed
Programs that are highly optimized or have had their debug information removed
Programs that are themselves low-level debugging tools
Customer situations where the developer can only access post-mortem information
MDB provides a completely customizable environment for debugging these programs and scenarios, including a dynamic module facility that you can use to implement your own debugging commands for program-specific analysis. Each MDB module can be used to examine the program in several different contexts, including live and post-mortem. The Oracle Solaris OS includes a set of MDB modules that help you debug the kernel and related device drivers and kernel modules. Third-party developers might want to develop and deliver their own debugging modules for supervisor or user software.
For detailed information about the mdb command-line syntax, see the mdb(1) man page.