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.
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus