Release 10.1A: OpenEdge Development:
Debugging and Troubleshooting

> ## The Debugger context

> The Debugger context consists of the data and execution status of all procedures running under Debugger control. The following sections describe:

> - Procedures and triggers

> - Persistent procedures

> - Callback procedures

> - Data

> - Execution status

> ##### Procedures and triggers

> Procedures and trigger blocks in the Debugger context include the executing procedure or trigger plus some or all of the procedures and triggers pushed onto the procedure call stack. The number of procedures and triggers on the call stack increases as each subprocedure or trigger calls another and decreases as each subprocedure or trigger returns to the one that called it. The Debugger provides information on a running application by referencing this call stack.

> The executing procedure and all procedures on the call stack (whether inside or outside the Debugger context) are active procedures. Active procedures include all those that you run directly or indirectly from the client and any additional procedures you start from the Debugger with Debug Run.

> Inactive procedures are procedures for which the Debugger cannot examine data. They include:

> - Procedures that have yet to be called.

> - Procedures that have completed execution and have returned to their caller.

> - Instances of persistent procedures that have been deleted from the session.

> - Instances of persistent procedures that are not currently executing.

> ##### Persistent procedures

> A persistent procedure is active in the Debugger context in the following instances:

> - When the persistent procedure is first executing to instantiate it (`RUN` `...` `PERSISTENT`).

> - When one of its triggers is executing in response to a user or program event.

> - When one of its internal procedures is executing from another procedure (`RUN` `...` `IN`).

> Otherwise, the persistent procedure is not on the call stack and is invisible to the Debugger context.

> ##### Callback procedures

> A callback procedure is an internal procedure that can be set by a 4GL program; for example, when generating or receiving a Web Services Out SOAP message, or when parsing an XML document. You can use the Debugger to set breakpoints in callback procedures.

> ##### Data

> Data in the Debugger context includes all variables, buffers, parameters, temp-tables, and attributes and fields of variables and objects defined or accessed by procedures inside the Debugger context.

> ##### Execution status

> The execution status includes the location of the current executable line and the relative position in the call stack of each procedure in the Debugger context, plus the current transaction state. An executable line is any 4GL line that contains a run-time statement (for example, `FOR`, `DISPLAY`, or `CREATE`). Although the listing monitored by the Debugger contains all the 4GL code for a procedure, the execution status reflects only executable lines; execution stops only on executable lines. Nonexecutable lines include comments and static data definition statements (for example, `DEFINE` or `FORM`). Static data definition statements take effect only at compile time and generate data items and objects for a procedure.

Copyright © 2005 Progress Software Corporation www.progress.com Voice: (781) 280-4000 Fax: (781) 280-4095