MDB provides a simple model of execution control: a target process can be
started from within the debugger using ::run, or MDB can attach to an
existing process using :A, ::attach, or the -p command-line option (see Chapter 5, Built-In Commands). Alternately, the
kernel can be booted using kmdb or kmdb can be loaded afterward. In
either case, a list of traced software events can be specified by the user.
Each time a traced event occurs in the target program, all threads in
the target stop, the thread that triggered the event is chosen as the
representative thread, and control returns to the debugger. Once the target program is
set running, control can be asynchronously returned to the debugger by typing the
user-defined interrupt character (typically Control-C).
A software event is a state transition in the target program that is observed
by the debugger. For example, the debugger may observe the transition of a
program counter register to a value of interest (a breakpoint) or the delivery
of a particular signal.
A software event specifier is a description of a class of software events that is
used by the debugger to instrument the target program in order to observe
these events. The ::events dcmd is used to list the software event
specifiers. A set of standard properties is associated with each event specifier,
as described under ::events in Built-in dcmds.
The debugger can observe a variety of different software events, including breakpoints, watchpoints,
signals, machine faults, and system calls. New specifiers can be created using
::bp, ::fltbp, :: sigbp, ::sysbp, or ::wp. Each specifier has an associated callback (an
MDB command string to execute as if it had been typed at the
command prompt) and a set of properties, as described under ::events in Built-in dcmds.
Any number of specifiers for the same event may be created, each with
different callbacks and properties. The current list of traced events and the properties
of the corresponding event specifiers can be displayed using the ::events dcmd.
The event specifier properties are defined as part of the description of the
::events and ::evset dcmds, in Built-in dcmds.
The execution control built-in dcmds, described in Built-in dcmds, are always available, but
will issue an error message indicating they are not supported if applied to
a target that does not support execution control.