Symbolic Debuggers

Windows NT only

The Microsoft Platform Software Development Kit (SDK) includes these symbolic debuggers:

These debuggers are intended to debug applications created with a Microsoft C/C++ compiler or compatible development tools. NTSD and KD are supported only on Windows NT.

You can use WinDbg to debug most applications, user-mode drivers, and kernel-mode drivers. You may have to use NTSD and KD to debug drivers that initialize before you can run WinDbg or that interfere with WinDbg itself. KD is a kernel-mode remote debugger that runs on a separate host computer. KD provides assembly language debugging and is intended for system developers and device driver authors. NTSD and KD share much of their syntax and support many identical commands. This section explains how to use NTSD and KD. The WinDbg section explains how to use WinDbg.

Using NTSD, you can display and execute program code, set breakpoints, and examine and change values in memory. Because NTSD can access memory locations through addresses, global symbols, or line numbers, you can refer to data and instructions by name rather than by address, making it easy to locate and debug specific sections of code. You can debug C programs at source-file level as well as at machine level. You can display source statements, disassembled machine code, or a combination of both. NTSD supports debugging multiple threads and processes. It is extensible, and can read and write both paged and nonpaged memory.

Using KD, you can debug kernel-mode code. KD also supports multiprocessor debugging. Because it is deficient in setting breakpoints in user-mode code and cannot be used to examine or deposit paged-out memory, KD is not well suited to debugging user-mode programs. KD does not provide support for threads. KD runs on a host computer and communicates through a null-modem serial cable with the target computer running Windows NT. The host computer must be running Windows NT.