CeDebugX (Compact 2013)

3/26/2014

CeDebugX is an extension to the Platform Builder debugger. It presents detailed information about the state of the system at break time and attempts to diagnose crashes, stoppages, and deadlocks.

CeDebugX commands are available at break time through the Target Control window in Platform Builder. See Target Control Debugging.

System Information

CeDebugX provides a set of commands that expose detailed information about important elements of the system at break time. There are commands to examine threads, processes, modules, synchronization objects, heaps, GDI objects, windows, message queues, and other objects in detail. This information extends the basic information that is available through the standard debugger Threads, Processes, and Modules windows, and is intended to make kernel and application level debugging more efficient.

Automatic Diagnosis

CeDebugX includes commands to evaluate the state of the system to diagnose the type and detailed nature of a crash, stoppages, or deadlock. CeDebugX looks for access violations, stack overflows, spinning threads, deadlocks, orphaned critical sections and mutexes, and heap corruptions. If one or more of these failures is detected, CeDebugX displays as much detailed information as possible regarding the failures, for example, exception address, call stacks, sync object ownership, memory evaluations, and so forth. If more than one failure is detected, CeDebugX presents a list of failures, sorted by severity and confidence in the diagnosis. If a crash or stoppage is detected, but a positive diagnosis is not possible, CeDebugX will attempt to provide suggestions for further investigation.

Debugging Requirements

CeDebugX requires an active debugging session and all of the following conditions:

  • Platform Builder is connected to the target device through the Kernel Independent Transport Layer (KITL).
  • The debugger is loaded on the device.
  • The device is at a debug break state.
  • Platform Builder has access to valid symbols for the modules on the device.

Loading CeDebugX

See the Target Control Debugging section for more information about commands to load and manage debugger extensions.

CeDebugX Commands

Once the requirements for running CeDebugX are met and the extension successfully loaded, CeDebugX commands can be invoked at the Target Control command prompt to diagnose errors and conditions on the device.

All debugger extension commands must be preceded by an exclamation point (!), for example, !help.

Descriptions of most commands and their parameters can be found by typing !<command> /? at the Target Control command prompt.

The following table describes the most important and useful commands.

Command

Description

!help

Lists all available commands.

!refresh

Synchronizes the extension with the current state of the system. This command must be invoked after every run/break cycle, or anytime the state of the system changes.

!diagnose

Performs an automatic diagnosis of all crashes or non-responsive states present in the current state at break time.

!xml

Logs positive diagnoses and detailed system information in an XML file and displays the formatted data in a browser window.

The following topics provide more details about CeDebugX commands:

For commands that deal with file creation, see Files Generated by CeDebugX.