[fpc-devel] FPC debug information

dmitry boyarintsev skalogryz.lists at gmail.com
Wed Nov 5 08:31:12 CET 2008


another question about debug information:

while debugging with gdb, i have found that object methods are 'mapped' to
the debugger (or debug information?) as functions with additional parameter
'self' (what they actually are),

so let's say, i have an object m: TMyObject with method procedure MyMethod;

while gdb, does not understand the syntax, m.MyMethod, method still can be
called with TMYOBJECT_MYMETHOD(m) call.

can name collission to happen? if i also have function in the code, named
like procedure TMyObject_MyMethod(a: TMyObject), so it's name would match
(?) for the debugger with MyMethod ?

I hope my question is clear :)

------ Here's the code

type
  TMyObject = class
  public
  procedure MyMethod;
  end;


procedure TMyObject.MyMethod;
begin
  writeln('My method object');
end;

procedure TMyObject_MyMethod(m: TMyObject);
begin
  writeln(m.ClassName);
end;

procedure TMyObject__MyMethod(m: TMyObject);
begin
  writeln(m.ClassName, ' **');
end;

var
  m : TMyObject;
begin
  m := TMyObject.Create;
  m.MyMethod;
  TMyObject_MyMethod(m);
  m.Free;
end.

------ Here's the debugger output

(gdb) info functions
All defined functions:

File main6.pas:
void PASCALMAIN(void);
void TMYOBJECT_MYMETHOD(TMYOBJECT);
void TMYOBJECT__MYMETHOD(TMYOBJECT);  // TMyObject method?
void TMYOBJECT__MYMETHOD(TMYOBJECT);  // TMyObject method?

------

is there anyway for debugger to understand which of the procedures is
actually TMyObject method?

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20081105/c580fccd/attachment.html>


More information about the fpc-devel mailing list