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

Reply via email to