<?Pub CX solbook(?><appendix id="notes-1"><title>Notes</title><sect1 id="notes-2"><title>Warnings</title><para>The following warning information applies to the use of MDB.</para><sect2 id="notes-4"><title>Use of the Error Recovery Mechanism</title><para>The debugger and its dmods execute in the same address space, and  thus
it is quite possible that a buggy dmod can cause MDB to dump core or otherwise
misbehave. The MDB <command>resume</command> capability,  described in <olink targetptr="interaction-2" remap="internal">Signal Handling</olink>, provides a limited recovery
mechanism for these situations. However, it is not possible for MDB to know
definitively whether the dmod in question has corrupted only its own state,
or the debugger's global state. Therefore a <command>resume</command> operation
cannot be guaranteed to be safe, or to prevent a subsequent crash of the debugger.
The safest course of action following a <command>resume</command> is to save
any important debug information, and then quit and restart the debugger.</para>
</sect2><sect2 id="notes-5"><title>Use of the Debugger to Modify the Live Operating
System</title><para>The use of the debugger to modify (that is,  write  to)  the address
space of live running operating system is extremely dangerous, and may result
in a system panic in the event the user damages a kernel data structure.</para>
</sect2><sect2 id="notes-10"><title>Use of <command>kmdb</command> to Stop the Live
Operating System</title><para>The use of <command>kmdb</command> to stop the live operating system
using <literal>mdb -K</literal> or by setting a breakpoint in the live operating
system is intended for use by developers and not on production systems. When
the operating system kernel is stopped by <command>kmdb</command>, operating
system services and networking are not executing, and other systems on the
network that depend upon the target system will not be able to contact the
target system.</para>
</sect2>
</sect1><sect1 id="notes-3"><title>Notes</title><sect2 id="notes-6"><title>Limitations on Examining Process Core Files</title><para>MDB does not provide support for examining process core files that were
generated by a release of the Solaris operating system preceding Solaris 2.6.
If a core file from one operating system release is examined on a different
operating system release, the run-time link-editor debugging interface  (<filename>librtld_db)</filename>  may not be able to initialize. In this case, symbol
information for shared libraries will not be available.  Furthermore, since
shared mappings  are not present in user core files,  the text section and
read-only data of shared libraries  may not match the data that was present
in the process at the time it dumped core. Core files from Solaris x86 systems
may not be examined on Solaris SPARC systems, and vice-versa.</para>
</sect2><sect2 id="notes-7"><title>Limitations on Examining Crash Dump Files</title><para>Crash dumps from Solaris 7 and earlier releases may only be examined
with the aid of the <filename>libkvm</filename> from the corresponding operating
system release.  If a crash dump from one operating  system release is examined
using the dmods from a different operating system release, changes in the
kernel implementation may prevent some dcmds or walkers from working properly.
MDB will issue a warning message if it detects this condition. Crash dumps
from Solaris x86 systems may not be examined on Solaris SPARC
systems, and vice-versa.</para>
</sect2><sect2 id="notes-8"><title>Relationship Between 32-bit and 64-bit Debugger</title><para>MDB provides support for debugging both 32-bit and 64-bit programs.
Once it has examined the target and determined its data model, MDB will automatically
re-execute the mdb binary that has the same data model as the target, if necessary.
This  approach simplifies the task of writing debugger modules, because the
modules that are loaded will use the same data model as the primary target.
Only the 64-bit debugger  may be used to debug 64-bit target programs. The
64-bit debugger can only be used on a system that is running the 64-bit operating
environment.</para>
</sect2><sect2 id="notes-11"><title>Limitations on Memory Available to <command>kmdb</command></title><para>The memory available to <command>kmdb</command> is allocated when the
debugger is loaded, and cannot be expanded after that point in time. If debugger
commands attempt to allocate more memory than is available, they will not
be able to execute. The debugger will attempt to gracefully recover from low
memory situations, but may be forced to terminate the system under dire circumstances.
System memory constraints are especially acute on x86 platforms that use the
32&ndash;bit operating system kernel.</para>
</sect2><sect2 id="notes-9"><title>Developer Information</title><para>The <literal>mdb</literal>(1) man page provides a detailed description
of built-in <command>mdb</command> features for easy developer reference.
The header file &lt;<filename>sys/mdb_modapi.h</filename>&gt; contains prototypes
for the functions in the MDB Module API, and the <literal>SUNWmdbdm</literal> package
provides source code for an example module in the directory <filename>/usr/demo/mdb</filename>. </para>
</sect2>
</sect1>
</appendix><?Pub *0000005608 0?>