diff -r 578be2adaf3e -r 307f4279f433 Adaptation/GUID-4993AF8E-28C3-54BA-8D27-D86E05D39CFD.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Adaptation/GUID-4993AF8E-28C3-54BA-8D27-D86E05D39CFD.dita Fri Oct 15 14:32:18 2010 +0100 @@ -0,0 +1,61 @@ + + + + + +Crash +Logger TechnologyThe Crash Logger contains a logger program that stores system state +information when a crash occurs, and a reader application that can be used +later to get this information +
The +crash logger

When the kernel crashes, control is handed to the +crash logger. It tries to read as much state information as it can reasonably +find, and dumps it to a pre-reserved location in permanent storage flash storage).

Support +exists for dumping information to nor flash and nand flash. +The crash logger must have its own drivers to do this, as it cannot be assumed +that any specific part of the kernel is operating correctly in these circumstances. +These drivers are essentially simplified versions of the standard drivers.

All +monitoring functionality, crash logging and crash debugging is placed in kernel +extensions. Functionality can be enabled or disabled by placing the appropriate +kernel extensions into ROM at ROM build time.

To support both crash +logging and debugging without duplicating code, a common module, exmoncommon.dll, +has been created. This extension contains all of the generic monitoring code, +and supports features such as dumping registers, thread stacks and object +containers and is responsible for registering with the kernel’s crash monitor +entry point:

Epoc::SetMonitorEntryPoint()

This +extension must be placed in ROM before either of the two monitoring extensions, +as they both rely on its functionality. As exmoncommon.dll depends +on the underlying memory model, it is built from the Variant.

After +the common monitoring code registers itself with the kernel, further debugging +extensions may register with the common code. These extensions are called +when the kernel fails, in the order that they register. The maximum number +of extensions currently supported is nine though only two- the interactive +debugger, and the non-interactive crash logger are provided. However, this +is an arbitrary limit set by the macro definition MONITOR_MAXCOUNT in +the file E32\include\kernel\monitor.h, and can be increased +given sensible use cases.

    +
  • exmondebug.dll is +the traditional interactive debugger.

  • +
  • exmonlog.dll is +the crash logger.

  • +

These DLLs are also built from the Variant. In the case of the crash +logger, two separate .mmp files exist:

    +
  • one for NAND flash, +building exmonlognand.dll

  • +
  • one for NOR flash, building exmonlognor.dll

  • +

The rombuild scripts ensure that the crash logger for only one type +of flash is placed into the ROM, and named as exmonlog.dll.

+
The crash reader

At +the next system boot, the crash reader application uses the normal system +flash drivers to read the crash log from the reserved non-filesystem (non-uservisible) +flash area, and to write it into the user-visible file system.

The +output file from the crash reader is a text file, or a compressed GZIP-compatible file.

The +crash reader application is called crashread.exe, which +is built from e32utils\crashread\crashread.mmp.

+
\ No newline at end of file