debugDetective
|
The debugDetective Lambda receives synchronous calls from the
DRM (Dynamic typed Register Machine) whenever a debugger trace event occurs.
The debugDetective Lambda is Lisp programmer supplied. If the Lisp programmer suplies no debugDetective Lambda,
then the VM will not trace instructions. The user supplied debugDetective, in combination with the debugEval function, provide an enhancement to
the standard Lisp debugging method, which is to insert writeln instructions at strategic locations in the code.
Before the debugDectective function is called, the VM Emulator sets the gTP->DebugSuspended switch to ON
so that instuction tracing is inactive until the debugDetective function returns control to the VM Emulator. The activities of the debugDetective can include the traditional Lisp writeln instructions or they can be as
complex and creative as the user supplied debugDetective function can manage. Once the debugDetective function returns control to the VM Emulator, instruction tracing continues in the
normal manner until the debugEval function returns control. Instruction tracing is ONLY active while
inside the debugEval function ONLY when JitOFF is true. The debugDetective function is called under three circumstances as follows: ;; Called by the debug & debugEval functions when the engine state is changed. (debugDetective) ;; Called by the VM Emulator when a trace break has been requested. (debugDetective Lambda CodeL Recursion Rv Av Tv Pv Cv Sv Iv void) ;; Called by the VM Emulator when an error has occured. (debugDetective Lambda CodeL Recursion Rv Av Tv Pv Cv Sv Iv errMsg) Usage The debugDetective function also operates in cooperation with the disassemble function and the debugDialog function.
For correct operation, the target Analytic Information Server Lambda must have been
compiled with (debug compileon:). The disassemble command will display the
source and generated DRM virtual machine instructions for any Lambda compiled with
(debug compileon:). The displacement nn: arguments, shown in these debug commands,
are those generated from the disassemble command.
Expression:
Arguments
Name
Type
Description
Returns:
Expression:
Arguments
Name
Type
Description Argument: Lambda Lambda
The Lambda in which the error occurred Argument: CodeL Integer
The VM assembler displacement at which the error occurred Argument: Recursion Integer
The VM recursion level at which the error occurred Argument: Rv Structure
The Structure of Registers == value pairs when the error occurred Argument: Av Structure
The Structure of Argument == value pairs when the error occurred Argument: Tv Structure
The Structure of vars == value pairs when the error occurred Argument: Pv Structure
The Structure of pvars == value pairs when the error occurred Argument: Cv Structure
The Structure of cvars == value pairs when the error occurred Argument: Sv Structure
The Structure of svars == value pairs when the error occurred Argument: Iv Structure
The Structure of Interfaces == value pairs when the error occurred Argument: errMsg String
The String error message when the error occurred
Returns:
Expression:
Arguments
Name
Type
Description Argument: Lambda Lambda
The Lambda in which the trace break occurred Argument: CodeL Integer
The VM assembler displacement at which the trace break occurred Argument: Recursion Integer
The VM recursion level at which the trace break occurred Argument: Rv Structure
The Structure of Registers == value pairs when the trace break occurred Argument: Av Structure
The Structure of Argument == value pairs when the trace break occurred Argument: Tv Structure
The Structure of vars == value pairs when the trace break occurred Argument: Pv Structure
The Structure of pvars == value pairs when the trace break occurred Argument: Cv Structure
The Structure of cvars == value pairs when the trace break occurred Argument: Sv Structure
The Structure of svars == value pairs when the trace break occurred Argument: Iv Structure
The Structure of Interfaces == value pairs when the trace break occurred Argument: errMsg Void
The error message is always void
Returns:
Here are a number of links to Lambda coding examples which contain this instruction in various use cases.
Here are the links to the data types of the function arguments.
Integer | String | Structure | Vector |
Here are also a number of links to functions having arguments with any of these data types.
Analytic Information Server (AIS)AIS Component Systems
|