[Lazarus] How to disable the assembler window on Linux?

Martin lazarus at mfriebe.de
Tue May 14 11:48:24 CEST 2013


On 11/05/2013 05:11, silvioprog wrote:
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
>   s: string;
> begin
>   s := 'abc'; << Break point here (F5) // line 1
>   ShowMessage(s); // line 2
> end;
>
> and I use Step Over (F8), the cursor go to "line 2", but the same code 
> in Linux, go to GTK units. See:
>

Same problem: 
http://forum.lazarus.freepascal.org/index.php/topic,20870.msg121583.html#msg121583 


It appears that GDB decides that the step ends in the RTL (in your case 
that could be ansi_string_inc_ref or dec_ref or similar.

Since the RTL is optimized and has no debug info, the IDE searches an 
the stack for the caller.

Due to the optimization some of the RTL functions have no full stack 
frame. Therefore GDB can not correctly read the stack, and it does skip 
the direct caller [1]. So your function can not be found, and the next 
caller is used.

[1] The hiding of a caller due to optimization has always existed. And 
is correct behaviour. That is why your own project should not be 
optimized. But the RTL should be allowed, since gdb SHOULD not stop 
there, and should not have to bother with it.






More information about the Lazarus mailing list