Die JCL bietet interessante Möglichkeiten mit der
Unit JclDebug:
Sie hat die Funktion
function Caller(Level: Integer = 0; FastStackWalk: Boolean = False): Pointer;
Level = 0 bedeutet die aktuell aufgerufene Prodzedur, Level 1 den Aufrufer, Level 2 den Aufrufer des Aufrufers, ...
GetLocationInfo(addr) gibt dann alle interessanten Informationen zurück wie UnitName, ProzedureName, Zeilennummer, Spaltennummer usw.
Hoffe das hilft.
P.S.: habe gerade gesehen, daß generic schon was in die Richtung geschrieben hat...