Hello,
As you probably know, it is possible to include source filename, line number, date etc. in your source with the following directives: {$I %FILENAME%} {$I %LINE%} {$i %DATE%} At my request, Florian added {$I %CURRENTROUTINE%} to the list of possibilities, which means you can do nifty things as: program testcr; {$mode objfpc} Type TMyClass = Class(TObject) Public Procedure MyMethod; end; Var Indent : Integer; Procedure MethodEnter(Const AMethod : String); begin Writeln(StringOfChar(' ',Indent),'Entering ',AMethod); Inc(Indent,2); end; Procedure MethodExit(Const AMethod : String); begin Dec(Indent,2); if Indent<0 then Indent:=0; Writeln(StringOfChar(' ',Indent),'Exiting ',AMethod); end; Procedure Debug(Const AMsg : String); begin Writeln(StringOfChar(' ',Indent),AMsg); end; Procedure DoSomething; Procedure DoNested; begin MethodEnter({$I %CURRENTROUTINE%}); Debug('Nested handling in '+{$I %CURRENTROUTINE%}); MethodExit({$I %CURRENTROUTINE%}); end; begin MethodEnter({$I %CURRENTROUTINE%}); Debug('Doing something in '+{$I %CURRENTROUTINE%}+' at line '+{$I %LINE%}); DoNested; MethodExit({$I %CURRENTROUTINE%}); end; Procedure TMyClass.MyMethod; Procedure DoNested; begin MethodEnter({$I %CURRENTROUTINE%}); Debug('Nested handling in '+{$I %CURRENTROUTINE%}); MethodExit({$I %CURRENTROUTINE%}); end; begin MethodEnter({$I %CURRENTROUTINE%}); Debug('Doing some things in '+{$I %CURRENTROUTINE%}+' at line '+{$I %LINE%}); DoNested; MethodExit({$I %CURRENTROUTINE%}); end; Var T : TMyClass; begin MethodEnter({$I %CURRENTROUTINE%}); DoSomething; T:=TMyClass.Create; try T.MyMethod; finally T.Free; end; MethodExit({$I %CURRENTROUTINE%}); end. Which produces something like Entering $main Entering DoSomething Doing something in DoSomething at line 44 Entering DoNested Nested handling in DoNested Exiting DoNested Exiting DoSomething Entering MyMethod Doing some things in MyMethod at line 61 Entering DoNested Nested handling in DoNested Exiting DoNested Exiting MyMethod Exiting $main Kudos to Florian. Michael. -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus