[Lazarus] Debugger hanging
Martin
lazarus at mfriebe.de
Wed Mar 28 16:16:02 CEST 2012
On 28/03/2012 14:30, Ludo Brands wrote:
> Hi,
>
> Encountered an endless loop with the debugger while stepping through code
> and the call stack window open. The Debug Output window is filling up with
> messages like this:
>
> <-stack-select-frame 2158>
> ^done
> (gdb)
> <-data-evaluate-expression $fp>
> ^done,value="0x34bf780"
> (gdb)
> <-stack-select-frame 2159>
> ^done
> (gdb)
I can see what happens, and where to build in protection.
It looks like it is searching for the parent frame of a nested procedure.
procedure Foo;
procedure FooInner;
begin
// watches can refer to "Foo" (parent)
FooInner;
end;
begin end;
If FooInner called itself 1000 times, then "Foo" is 1000 frames up
But in this case, it seems it was searching outside the stack. $fp is
not changing. So gdb is not actually switching to that stack frame
(likely because it does not exist)
----------
Does the app use threads?
It can also be, that if the app was compiled with optimization, the
value that is searched for, was incorrect....
> <-data-evaluate-expression $fp>
> ^done,value="0x34bf780"
> (gdb)
> <-stack-select-frame 2160>
> ^done
> (gdb)
> <-data-evaluate-expression $fp>
> ^done,value="0x34bf780"
> (gdb)
> <-stack-select-frame 2161>
> ^done
>
>
> Stopping the debugger is the only way out.
>
> Windows XP sp2, gdb 7.3, Lazarus 0.9.31 svn 36383.
>
> Not sure if I'll be able to reproduce this.
>
> Ludo
>
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
More information about the Lazarus
mailing list