# Debug facilities

## Contents

- Overview
- Debugging keys

## Overview

The Emulator is designed to be the primary development and debugging tool for EPOC, alongside any language specific tools provided by development environments.

In debug builds of EPOC, the EIKON GUI provides special key combinations for resource checking and redraw testing, which can help to trap memory leaks early in the development cycle. All EIKON debug keys are accessed using a ctrl+alt+shift prefix. The Emulator provides these debug key combinations in its debug build.

## Debugging keys

All EIKON applications may be exited using ctrl+E. Additionally the Window Server provides ctrl+alt+shift+K to kill the application with current keyboard focus, and ctrl+alt+shift+X to bring down the Emulator.

Drawing:

M | brings up `Move me` dialog, which can be moved around with the pointer, to test whether applications handle partial redraw properly
R | redraw whole screen, to test whether applications handle complete redraw properly
F | enable window server auto-flush for all programs using the current control environment
G | disable window server auto-flush for all programs using the current control environment

Miscellaneous features:

V | turn on or off verbose information messages
Z | send keys A through J in fast sequence to the application, to test its ability to handle fast repeated keys

Resource allocation:

A | show number of heap cells allocated on user heap by the current program
B | show number of file server resources in use by the current program
C | show number of window server resources in use by the current program
P | show dialog for the heap failure tool: see below for details.
Q | turn off heap failure mode

The heap failure tool artificially generates resource allocation failures. It is used by developers to test that an application copes properly with such failures. The dialog options are as follows:

- `App heap failure Type`: generates failures for resource allocation requests from applications. `Random` means that requests fail at a random rate. `Deterministic` means that requests fail at the rate specified in the `Rate` box.
- `Wserv heap failure Type`: generates failures for resource allocation requests from the EPOC window server. The options are as for `App heap failure`.
- `File failure tool`: selecting this option generates failures for file access attempts.