[Lazarus] i'm looking for tips on debugging deep nested code with recursive functions

Martin lazarus at mfriebe.de
Wed Feb 15 15:42:11 CET 2012


On 15/02/2012 12:19, ik wrote:
> On Wed, Feb 15, 2012 at 13:59, Everton Vieira<tonvieira at gmail.com>  wrote:
>> Em 15/02/2012, às 09:49, ik escreveu:
>>
>>> Hello,
>>>
>>> I have a code with a lot of loops and recursive calls.
>>> Somewhere at the code, at some point, I think I have an Off By One or
>>> something similar that happens that break my code.
>>> The question is, how would you suggest to compile such complicated
>>> calls to figure out where the problem/s exists ?
>> For debug that, would be nice to make some log of the behavior of the app, that i`ve been thinking this days, but in which doesn't get nothing at far as usable. Well you can make a lot of debugln to monitor the behavior of it to try to see where is the problem. But i`m freak sure is hard work.
> I have a lot of prints on the screen (stderr even). but I just can't
> figure out what am I missing. I know where it happens, and on what
> level, but not why.
>

For logging info on nested stuff. have a look at Debugln / DebuglnEnter 
/ DebuglnExit  (LclProc, trunk LazLogger)

Procedure Foo;
begin
   DebuglnEnter('now in foo')
   try  // optional

   Bar(Foo());
   Debugln('123');

   finally
   DebuglnExit('leaving foo')
   end
end;

All Debugln in the block are indented with 2 spaces per level (or 
prefixed number, if more than 15 spaces)

So that gives a nice log





More information about the Lazarus mailing list