The main objective of the debug component is to provide the required services to enable developers to build powerful debugging tools. The interface provided by the debug component is designed to be:
The term "non-intrusive" means that debugging services must:
Debuggers usually require that a program, to be debugged be preprocessed accordingly, compiled and linked with special options. If a program is prepared for debugging but not actually being debugged, the debugging services should have no impact on the execution of the program. Particularly application performance should not be affected in any way. These design objectives of the OS/2 V2.0 debug component should be kept in mind by the developers of debugging tools.
The power of the debug component is an important issue to consider when designing and developing debugging tools. Since the debugger gains access to the memory and registers of the application being debugged, it is the responsibility of the debugging tool developer to ensure the correct use of these resources to prevent deadlocks or inadvertent corruption of application resources.
Debuggers should not be used as tools for evaluating program performance. The debug component does not provide reliable timings for the execution of program steps. It is useful, however, for examining the execution path of a particular transaction through a program.