When analysis of a dump file or a running system requires
intimate knowledge of data structures that are not known to
the System Dump Analyzer, the functionality of SDA can be
extended by the addition of new commands into which the necessary
knowledge has been built. Note that in this description, whenever
a reference is made to accessing a dump file (ANALYZE/CRASH_
DUMP), this also includes accessing memory in the running system
(ANALYZE/SYSTEM).
For example, a user-written device driver allocates nonpaged
pool and records additional data about the device there (logging
different types of I/O, perhaps), and a pointer to the new
structure is saved in the device-specific extension of the UCB.
After a system crash, the only way to look at the data from SDA
is to do the following:
o Invoke the SDA command DEFINE to define a new symbol (for
example, UCB$L_FOOBAR) whose value is the offset in the UCB of
the pointer to the new structure.
o Invoke the SDA commands "SHOW DEVICE <device>" and "FORMAT
UCB" to obtain the address of the nonpaged pool structure.
o Invoke the SDA command "EXAMINE <address>;<length>" to display
the contents of the data in the new nonpaged pool structure as
a series of hexadecimal longwords.
o Decode manually the contents of the data structure from this
hexadecimal dump.
An SDA extension that knows the layout of the nonpaged pool
structure, and where to find the pointer to it in the UCB, could
output the data in a formatted display that alerts the user to
unexpected data patterns.