Preface
Purpose
Audience
Organization
Using ABL documentation
References to ABL compiler and run-time features
References to ABL data types
Typographical conventions
Examples of syntax descriptions
Long syntax descriptions split across lines
Complex syntax descriptions with both required and optional elements
Example procedures
OpenEdge messages
Obtaining more information about OpenEdge messages
OpenEdge Debugger
Introduction
Debugger system requirements
Debugger features and functions
Application control
Open and incremental execution
Procedure interruption
Procedure termination
Application data management
Execution monitoring
Code path analysis
Transaction monitoring
Breakpoint analysis
Dynamic object monitoring
Session management and information
Window settings
Listing management
ABL Debugger control
Enabling debugging
Understanding debugging sessions
Interaction between Debugger and client
Debugger and application control
Application interaction during Debugger control
Debugger interaction during application control
Procedures and the Debugger context
The Debugger context
Procedures and triggers
Persistent procedures
Callback procedures
Data
Execution status
Debugger context and the procedure call stack
Debugging in a distributed environment
Distributed debugging
Remote debugging
Compatibility issues
Starting and Stopping the Debugger
Debugging modes
Application mode
Exiting procedures started with Debug > Run
Exiting the Debugger before the initial application
Exiting the initial application before the Debugger
Stand-alone mode
Attachable mode
Requirements for r-code
Performance and security considerations
Making the process ready for debugging
Using the Debugger window
Using the Ready Attachable Debugger (-debugReady) startup parameter
Using the proDebugConfig command
Stacked applications
Debugging from the Procedure Editor
Debugging from the AppBuilder
Debugging from the ADE Desktop
Debugging from the OpenEdge command line
Debugging from alert dialog boxes
Displaying the .NET Stack Trace in the Stack Trace dialog box
Displaying the ABL Error CallStack in the Stack Trace dialog box
Starting the Debugger from the Stack Trace dialog box
Debugging from an ABL procedure
Debugging in attachable mode
Detaching from the process
Debugger Window and Files
Debugger window layout
Debugger window panes
Source code pane
Debug listing
Listing indicators
Text selection
Run to Line command
ABL stack trace pane
Variables pane
Accessing array variables and parameters
Accessing BLOB fields
Accessing CLOB fields and LONGCHAR variables
Accessing DATETIME and DATETIME-TZ variables
Accessing class object instances
Accessing object properties
Accessing ProDataSet objects
Watches pane
Watches for built-in functions
Drag-and-drop watches
Debugger title bar
Debugger menu bar options
Accelerator keys and mnemonics
File menu
Edit menu
Search menu
View menu
Debug menu
Diagnostics menu
Data menu
Window menu
Help menu
Debugger toolbar buttons
Debugger status bar
Debugger dialog boxes
Add Watch dialog box
Attach to Process dialog box
Using the Make debug-ready and Attach option
Using the Attach to debug-ready Process option
Breakpoints dialog box
Dataview dialog box
Attributes tab
Fields tab
Array tab
Value tab
Distinguishing ProDataSet methods from attributes
Dynamic Object Tracking dialog box
Control Monitoring tab
View Objects tab
Edit Breakpoint dialog box
Editing a breakpoint
Editing a watchpoint
Find dialog box
New Breakpoint dialog box
Setting a breakpoint in a procedure
Procedure names and line numbers
Conditional breakpoints
Setting an error-based breakpoint
Breakpoints triggered by errors
Setting a watchpoint
Watchpoint expressions
Watchpoint conditions
Adding a watchpoint to a watch
Open dialog box
Preferences dialog box
Font tab
Settings tab
Attachable tab
Select Process dialog box
Debugger files
Debug listing files
Automatic listing generation
Manual listing generation
Locating debug listing files in attachable mode
Procedure files and listing generation
Debug listing generation from r-code
Debug listing generation from source code
Hidden procedure files
Using System Handles for Debugging
DEBUGGER system handle attributes and methods
Using the DEBUGGER system handle to start and control the Debugger
Using the DEBUGGER system handle in application mode
Debugging by controlling breakpoints from an ABL procedure
Debugging a called subprocedure
Using the DEBUGGER system handle in stand-alone mode
Using the SESSION handle to start the Debugger
Troubleshooting Resources
Logging in OpenEdge
Logging infrastructure overview
LOG-MANAGER system handle attributes and methods
DSLOG-MANAGER system handle attributes and methods
Log files
Specifying the log filename
Clearing the log file
Writing user messages to the log file
Closing the log file
Log size threshold
Specifying the log size threshold
Specifying the number of log files retained
Filename for rolled-over log files
srvrLogWatchDogInterval property
Log entry types
Log entry types (Client context)
Log entry types (Server context)
Specifying log entry types
Logging levels
Specifying the logging level
Logging settings
Log Entry Types Detail
ABL message logging
ABL trace logging
ABL transaction logging
AIA logging
AppServer logging
Database connection logging
DataServer logging
DataServer client context logging
DataServer server context logging
DataServer logging switch for ABL to SQL correlation
Dynamic object logging
Logging dynamic object creation and deletion
Logging class creation and deletion
Deleted objects
Objects created and deleted implicitly
Logging levels for dynamic objects
Basic logging level (2)
Verbose logging level (3)
Event logging
Event generation
Event stack
Logged events
Logged information
Event log entry types and logging levels
Starting event logging
Event message formats
Format 1: event occurs
Format 2: indirect action
Format 3: pushed on to the stack/popped off the stack
Format 4: generated by the ABL APPLY statement
Format 5: trigger execution
Format 6: event discarded
Sample Event logs
File access logging
Ignored operation logging
NameServer logging
Query information logging
Query information log entry type and logging levels
Starting query information logging
Starting query information logging on individual queries
Writing query statistics on-demand
Generating query information
Distinguishing between query objects
Unsupported queries
Query information logged
Query plan
Identifying indices
Query statistics
Query statistics for pre-pass queries
Query statistics for non-pre-pass queries
Query preparation statistics
Number of records sent by the server
Number of available records in the query
Time taken to build a result-list
Field list information
Database block access
Read Access Statistics
Sample query information logs
SAX parser logging
Temp-table logging
Unified Broker logging
Web Services Adapter (WSA) and Web Service logging
WSA Log entry types
Setting the WSADefault log entry type
Setting the loggingLevel property
Setting the serviceLoggingLevel property
Setting the serviceFaultLevel property
Understanding Web service information in WSA logs
WebSpeed Messenger logging
Other Diagnostics Resources
Abnormal termination dump files
procore file
protrace file
core file
How the AVM handles failure conditions
Run-time diagnostics
Collecting r-code usage statistics
Collecting temp-table usage statistics
Supported virtual system tables for temp-tables
ABL classes for accessing temp-tables
Index Statistics file
Table Statistics file
Progress.Database.TempTableInfo:GetTableStatHistoryHandle()
Analyzing ABL code
Debug Alert startup parameter
Enhanced logging features
STARTUP-PARAMETERS attribute of the SESSION system handle
ProSpy Plus
Generating a protrace file for a running program
Analyzing procedures and queries
COMPILE XREF option
INDEX-INFORMATION attribute of the query object handle
Preface
INDEX-INFORMATION attribute of the query object handle