On 15/09/2022 16:17, Michael Van Canneyt via fpc-devel wrote:


On Thu, 15 Sep 2022, Martin Frb via fpc-devel wrote:

https://gitlab.com/freepascal.org/fpc/source/-/issues/39904

On top of adding the functions in the interface to the dwarf info, it would be great if the compiler could also add some sort of link to the underlaying TObject.

So the debugger could (if available) show the user the object/instance that implements the interface.

I believe the whole idea of interfaces is that this info is not available :-)
Well yes... From the applications point of view.

From the debuggers (or rather the user doing the debugging) point of view, there is only the question of "can it be done/implemented" (IMHO)

When the compiler generates the jump pads for an interface (that is implemented by an object in the app), then the compiler knows the object exists, and the compiler has all the info. It only needs to make it available to the debugger.

The debugger would then need to be able to check, if the address in the interface variable points to such a jump table. Either by checking if it is in the correct memory range, or better by finding a dwarf entry describing this address as an "interface vmt". In the latter case that dwarf info could hold in some way the offset for self, and the pointer to the dwarf info for class type (since the interface as a separate jump table at a diff address for each class that implements it)

I understand that it may be deemed to much work.... But it would be helpful.


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to