|
|
|
|
||
|
DEFINITION MODULE DebugHelper; (******************************************************************* Module DebugHelper (Version 1.0) Copyright (c) 1997-2006 by Andreas Fischlin and ETH Zurich. Purpose Helps generally to debug programs. Remarks Requires the Dialog Machine. Programming o Design Andreas Fischlin 07/03/1997 o Implementation Andreas Fischlin 07/03/1997 ETH Zurich Systems Ecology CHN E 35.1 Universitaetstrasse 16 8092 Zurich SWITZERLAND URLs: <mailto:RAMSES@env.ethz.ch> <http://www.sysecol.ethz.ch> <http://www.sysecol.ethz.ch/SimSoftware/RAMSES> Last revision of definition: 07/03/1997 AF *******************************************************************) VAR debugLev: INTEGER; (* READ ONLY, actually remains always positive *) (* Typically you use debugLev in an importing module to control the appearance of error messages used to trace program behavior. See also procedure Tell. can internally be increased or decreased by a hidden keybaord short-cut. It is: Command ^ Shift ^ Capslock ^ "H" to Increase (Higher) Command ^ Shift ^ Capslock ^ "L" to Decrease (Lower) The level > 0 is considered to be a debug mode "On". As soon as the level reaches 0, the debug mode is considered to be "Off". A sound feedback if file "On and Off.R" is accessible will be given accordingly. The hidden keyboard shortcuts won't allow you to decrease the value beyond zero. *) msg,s1,s2,s3: ARRAY [0..255] OF CHAR; (* for free use to construct messages *) PROCEDURE AppendS(VAR msg: ARRAY OF CHAR; s: ARRAY OF CHAR); PROCEDURE AppendBool(VAR msg: ARRAY OF CHAR; b: BOOLEAN); PROCEDURE AppendInt(VAR msg: ARRAY OF CHAR; x: LONGINT); PROCEDURE AppendReal(VAR msg: ARRAY OF CHAR; dec: CARDINAL; x: LONGREAL); PROCEDURE Tell (onDebugLev: INTEGER; msg: ARRAY OF CHAR); (* If current debugLev < ABS(onDebugLev), no message appears. If current debugLev >= ABS(onDebugLev) a message is produced. Depending on the sign of onDebugLev you may select between Inform level (negative sign) and Warn level (positive sign) messages. The former display a larger message, the latter let you call the debugger. onDebugLev = 0 is interpreted as onDebugLev -1. *) (* ************************************************************** FOR YOUR CONVENIENCE ONLY To use this module, simply paste at the end of your import list the following lines: (*. for degugging only .*) FROM DebugHelper IMPORT msg, AppendS, AppendBool, AppendInt, AppendReal, Tell; or (*. for degugging only .*) FROM DebugHelper IMPORT msg, s1, s2, s3, debugLev, AppendS, AppendBool, AppendInt, AppendReal, Tell; ************************************************************** *) END DebugHelper.
|
||
|
|
|