Difference between revisions of "Error Handling & Debugging"

From Recital Documentation Wiki
Jump to: navigation, search
Line 1: Line 1:
 
==Error Handling==
 
==Error Handling==
 
At runtime, the Recital/4GL will stop execution display an error message and create an error.mem file whenever an error occurs in the application, unless an alternative error handling procedure has been specified.
 
At runtime, the Recital/4GL will stop execution display an error message and create an error.mem file whenever an error occurs in the application, unless an alternative error handling procedure has been specified.
 +
  
 
====Error.mem====
 
====Error.mem====
Line 18: Line 19:
 
* Settings listing as per LIST STATUS  
 
* Settings listing as per LIST STATUS  
  
====[[SET ERRORVERSION]]====
+
 
 +
====SET ERRORVERSION====
 
The error.mem file will be named ''error.mem'' and will be overwritten by subsequent errors unless [[SET ERRORVERSION]] is ON.  If [[SET ERRORVERSION]] is ON, multiple numbered error.mem files are created with the following naming format:
 
The error.mem file will be named ''error.mem'' and will be overwritten by subsequent errors unless [[SET ERRORVERSION]] is ON.  If [[SET ERRORVERSION]] is ON, multiple numbered error.mem files are created with the following naming format:
  
Line 28: Line 30:
  
  
====[[DB_ERRORDIR]]====
+
====DB_ERRORDIR====
 
The error.mem file(s) will be created in the directory that is current when the error occurs unless the [[DB_ERRORDIR]] environment variable/symbol is set.  If set, [[DB_ERRORDIR]] points to a directory in which the error.mem file(s) will be created.
 
The error.mem file(s) will be created in the directory that is current when the error occurs unless the [[DB_ERRORDIR]] environment variable/symbol is set.  If set, [[DB_ERRORDIR]] points to a directory in which the error.mem file(s) will be created.
  
  
====[[ON ERROR]]====
+
====ON ERROR====
 
Alternative error handling procedures can be specified using the [[ON ERROR]] command.  When there is an active ON ERROR setting, no error.mem file will be created and program execution willl not be halted.  It is now up to [[ON ERROR]] error handler to trap the information required in order to trace the error and to take appropriate action based on the error that has occurred.
 
Alternative error handling procedures can be specified using the [[ON ERROR]] command.  When there is an active ON ERROR setting, no error.mem file will be created and program execution willl not be halted.  It is now up to [[ON ERROR]] error handler to trap the information required in order to trace the error and to take appropriate action based on the error that has occurred.
  
 
Note: The [[SAVE ERROR]] command allows for the creation of an equivalent of the error.mem file.
 
Note: The [[SAVE ERROR]] command allows for the creation of an equivalent of the error.mem file.
 +
  
 
====Error Information Functions====   
 
====Error Information Functions====   
Line 60: Line 63:
  
 
It is important to note that the [[PROCLINE()]] and [[PROCNAME()]] functions return information about the CURRENTLY executing procedure.  If these functions are called from within the error handling procedure, they will give information based on the error handling procedure itself and not the procedure in which the error occurred.  They should, therefore, be specified as parameters to the error handler, e.g.
 
It is important to note that the [[PROCLINE()]] and [[PROCNAME()]] functions return information about the CURRENTLY executing procedure.  If these functions are called from within the error handling procedure, they will give information based on the error handling procedure itself and not the procedure in which the error occurred.  They should, therefore, be specified as parameters to the error handler, e.g.
 +
  
 
<code lang="recital">
 
<code lang="recital">
Line 68: Line 72:
 
==Debugging==
 
==Debugging==
 
In Recital Terminal Developer, the DEBUG command displays a pop-up debugger allowing the specified program to be monitored during execution.  The pop-up debugger can also be activated by using the SET STEP ON command.  To debug an entire program, issue SET STEP ON before starting.  To debug just a particular section of the program, insert the command into the code.  The Debugger can be toggled on and off while running your program by means of a hot key procedure, e.g.:
 
In Recital Terminal Developer, the DEBUG command displays a pop-up debugger allowing the specified program to be monitored during execution.  The pop-up debugger can also be activated by using the SET STEP ON command.  To debug an entire program, issue SET STEP ON before starting.  To debug just a particular section of the program, insert the command into the code.  The Debugger can be toggled on and off while running your program by means of a hot key procedure, e.g.:
 +
  
 
<code lang="recital">
 
<code lang="recital">
Line 87: Line 92:
  
 
[[SET DEVELOPMENT|SET DEVELOPMENT OFF]]
 
[[SET DEVELOPMENT|SET DEVELOPMENT OFF]]
 +
  
 
When running in interpreted mode, a complete history trace of all commands executed can be generated. This requires the use of the [[SET HISTORY]] and [[SET DOHISTORY]] commands.
 
When running in interpreted mode, a complete history trace of all commands executed can be generated. This requires the use of the [[SET HISTORY]] and [[SET DOHISTORY]] commands.

Revision as of 15:42, 24 March 2009

Error Handling

At runtime, the Recital/4GL will stop execution display an error message and create an error.mem file whenever an error occurs in the application, unless an alternative error handling procedure has been specified.


Error.mem

The error.mem file includes the following information:

  • The Recital Product version, release, platform and compile date information
  • System information, such as maximum file size and maximum process stack
  • Recital License information
  • User and Node names and process ID
  • The error number
  • The error message
  • The program line
  • The program line number
  • A stack trace of the programs and procedures called
  • A list of all active public and private memory variables and classes
  • Status of open tables, indexes and current records.
  • Settings listing as per LIST STATUS


SET ERRORVERSION

The error.mem file will be named error.mem and will be overwritten by subsequent errors unless SET ERRORVERSION is ON. If SET ERRORVERSION is ON, multiple numbered error.mem files are created with the following naming format:

error0001.mem

error0002.mem

error0003.mem


DB_ERRORDIR

The error.mem file(s) will be created in the directory that is current when the error occurs unless the DB_ERRORDIR environment variable/symbol is set. If set, DB_ERRORDIR points to a directory in which the error.mem file(s) will be created.


ON ERROR

Alternative error handling procedures can be specified using the ON ERROR command. When there is an active ON ERROR setting, no error.mem file will be created and program execution willl not be halted. It is now up to ON ERROR error handler to trap the information required in order to trace the error and to take appropriate action based on the error that has occurred.

Note: The SAVE ERROR command allows for the creation of an equivalent of the error.mem file.


Error Information Functions

Several functions are available to give information about errors:


FUNCTION RETURNS
ERRNO() Operating System Error Number
ERROR() Recital 4GL Error Number
MESSAGE() Error Message
MESSAGE(1) Line which caused the error
PROCLINE() Currently executing procedure line number
PROCNAME() Currently executing procedure name


It is important to note that the PROCLINE() and PROCNAME() functions return information about the CURRENTLY executing procedure. If these functions are called from within the error handling procedure, they will give information based on the error handling procedure itself and not the procedure in which the error occurred. They should, therefore, be specified as parameters to the error handler, e.g.


on error do MyErrProc with procname(), procline()


Debugging

In Recital Terminal Developer, the DEBUG command displays a pop-up debugger allowing the specified program to be monitored during execution. The pop-up debugger can also be activated by using the SET STEP ON command. To debug an entire program, issue SET STEP ON before starting. To debug just a particular section of the program, insert the command into the code. The Debugger can be toggled on and off while running your program by means of a hot key procedure, e.g.:


procedure SetStep
// set step to opposite of current value
set step (!(set([step])))
return
 
procedure DefineKey
// set [TAB] as the hot key to call SetStep
on key label tab do SetStep
return


During the debugging process, the program must be running in interpreted mode, not in compiled mode. The DEBUG command will do this automatically. To ensure that the program is running in interpreted mode when using SET STEP ON/OFF, issue the following two commands before starting program execution:

SET COMPILE OFF

SET DEVELOPMENT OFF


When running in interpreted mode, a complete history trace of all commands executed can be generated. This requires the use of the SET HISTORY and SET DOHISTORY commands.


Example

set compile off
set development off
set history on
set dohistory on
set history to file myhis
use demo
edit
set history to
set dohistory off
vi myhis.his