[Lazarus] Several issues - Call Stack

Martin lazarus at mfriebe.de
Mon Jun 6 02:57:09 CEST 2011


On 06/06/2011 02:05, Hans-Peter Diettrich wrote:
> Martin schrieb:
>
>
>> I am not sure what you mean by the description?
>> The call-stack is supposed to fill when the debugger stops.
>
> Rigth, but now it appears to be always empty :-(
Not good, and worse, I can only guess, since it doesn't happen on my PC

>
>> If executiopn continues (run F9 / Step F8,.F7) it is cleared until 
>> the execution stops again.
>
> The effect is best seen with F7, when a step into a subroutine takes
> some time until the begin of the subroutine is focused in the editor, in
The time taken is normal, it's the time it takes to load the line-info 
(blue dots) from gdb.

> a different file. Here the Call Stack list is filled with entries, just
> after pressing F7, and is cleared when the new position is shown in the
> editor. The ListView title (column) bar also disappears for a short
> time, and when it reappears[1] the list is empty.
>
> Using F8, where the focus only moves to the next line in the same file,
> the CallStack appears to remain almost empty.
Anyway, first we need to establish if gdb returns anything (or even if 
the IDE asks.

Please have a look at the content of the "debug output" window.

When the stack window is open (and the power button enabled !), and the 
execution stops (breakpoint, end of step) you should see something like
(it helps to have watches and other windows closed, and to turn the 
power off in the "history" window)

<-stack-info-depth>
^done,depth="42"
(gdb)
<-stack-list-arguments 1 0 9>
^done,stack-args=[frame={level="0",args=[{name="SENDER",value="0x1ca9d0"},{name="this",value="<error 
reading 
variable>"}]},frame={level="1",args=[{name="this",value="0x1ca9d0"}]},frame={level="2",args=[]},frame={level="3",args=[]},frame={level="4",args=[]},frame={level="5",args=[]},frame={level="6",args=[{name="this",value="0x41d2934"},{name="MESSAGE",value="0"}]},frame={level="7",args=[{name="this",value="0x1ca9d0"},{name="THEMESSAGE",value="{MSG 
= 66567, WPARAM = 0, LPARAM = 0, RESULT = 0, WPARAMLO = 0, WPARAMHI = 0, 
LPARAMLO = 0, LPARAMHI = 0, RESULTLO = 0, RESULTHI = 
0}"}]},frame={level="8",args=[{name="this",value="0x1ca9d0"},{name="MESSAGE",value="{MSG 
= 66567, WPARAM = 0, LPARAM = 0, RESULT = 0, WPARAMLO = 0, WPARAMHI = 0, 
LPARAMLO = 0, LPARAMHI = 0, RESULTLO = 0, RESULTHI = 
0}"}]},frame={level="9",args=[{name="TARGET",value="0x1ca9d0"},{name="AMESSAGE",value="0"}]}]
(gdb)
<-stack-list-frames 0 9>
^done,stack=[frame={level="0",addr="0x00428a59",func="TFORM1__BUTTON4CLICK",file="unit1.pas",fullname="C:/data/lazarus/bug1/unit1.pas",line="131"},frame={level="1",addr="0x00500ef1",func="CLICK",file="include/control.inc",fullname="C:/lazarus_latest/lcl/include/control.inc",line="2286"},frame={level="2",addr="0x00543df3",func="STDCTRLS_TBUTTONCONTROL_$__CLICK"},frame={level="3",addr="0x005444e6",func="STDCTRLS_TCUSTOMBUTTON_$__CLICK"},frame={level="4",addr="0x00544b91",func="STDCTRLS_TBUTTON_$__CLICK"},frame={level="5",addr="0x00543cae",func="STDCTRLS_TBUTTONCONTROL_$__WMDEFAULTCLICKED$TMESSAGE"},frame={level="6",addr="0x0040b1e6",func="DISPATCH",file="../inc/objpas.inc",fullname="C:/FPC/SVN/trunc/rtl/win32/../inc/objpas.inc",line="592"},frame={level="7",addr="0x004ffce3",func="WNDPROC",file="include/control.inc",fullname="C:/lazarus_latest/lcl/include/control.inc",line="1683"},frame={level="8",addr="0x004f3628",func="WNDPROC",file="include/wincontrol.inc",fullname="C:/lazarus_latest/lcl/include/wincontrol.inc",line="5241"},frame={level="9",addr="0x005665de",func="DELIVERMESSAGE",file="lclmessageglue.pas",fullname="C:/lazarus_latest/lcl/lclmessageglue.pas",line="111"}]
(gdb)


If you see something like this, the try close and open the stack window,

Check if you see at least the commands being issued:
<-stack-info-depth>
<-stack-list-arguments 1 0 9>
<-stack-list-frames 0 9>

There may be more, and they may be for smaller number ranges too.

If you get this, then maybe it is an issue with the listview not 
displaying the updates....
Could even be an uncaught exception, and the list view be left with a 
"BeginUpdate" that is never finished (though they all should have try 
finally blocks...)

Check if you select "copy all", if you get the stack frames...







More information about the Lazarus mailing list