Hi,

is there any known problem with debugging code that uses lots of interfaces?
I use gdb with Lazarus under Linux.
I try to port ESS-Model class diagram program.
It has fancy interfaces like:

  IObjectModelListener = interface(IUnknown)
    ['{4CC11ED0-016F-4CC4-952E-E223340B1174}']
    procedure Change(Sender: TModelEntity);
  end;

  IBeforeObjectModelListener = interface(IObjectModelListener)
    ['{714C82A0-1098-11D4-B920-005004E9A134}']
  end;

  IAfterObjectModelListener = interface(IObjectModelListener)
    ['{714C82A1-1098-11D4-B920-005004E9A134}']
  end;

and then calls to QueryInterface:

           if L.QueryInterface(IBeforeObjectModelListener,Dum) = 0 then
             (L as IBeforeObjectModelListener).Change(nil);

When I try to debug some other problems, debugger hits a breakpoint correctly 
but the system (=Lazarus+gdb) freezes. It doesn't accept mouse clicks or key 
commands. Killing gdb helps, then Lazarus starts to respond again.

The strange thing is that I can step with F7 and F8 to the same breakpoint and 
it doesn't freeze. Apparently the interface code is correct. Only if I use F9 
to reach the breakpoint then it freezes.

I am not sure if the problem is Interfaces. It was just my guess.
Any ideas?


Regards,
Juha

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to