Functional Description

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:

  • Fast
  • Powerful
  • Flexible
  • Non-intrusive
  • Accurate
  • As portable as possible
  • Able to debug programs and DLLs
  • Able to debug mixed or pure 16 and 32-bit applications.

    The term "non-intrusive" means that debugging services must:

  • In no way compromise the integrity of the operating system
  • Minimize any impact on system performance
  • Have no effect on processes, other than the process or processes being debugged.

    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.


    [Back: Debugging Support]
    [Next: What Can Be Debugged]