Aufrufsverfolgung ermitteln
Verfasst: 04.01.2014 03:41
Hallo,
ich suche gerade nach einer Möglichkeit (ähnlich wie es der Debugger kann) zur Laufzeit im Quellcode per Macro oder Procedure eine Aufrufsverfolgung zu integrieren.
Es gibt ja die Konstante #PB_Compiler_Line, nur leider gibt mir diese ja nur die Zeile des aktuellen Aufrufs zurück.
In diesem Beispiel möchte ich aber irgendwie an die Zeilennummer des Aufrufs Beispiel(), sodass ich ermitteln kann, in welche "echten" Zeile Beispiel() mit einer negativen Zahl aufgerufen wurde.
Aktuell verwende ich ein Macro dieser Art hier:
Allerdings bietet es auch nur geringe Anwendungsmöglichkeiten, und hat den Nachteil, dass ich alle Proceduren zu Macros machen müsste und eine extra Procedure schreiben muss.
Wie macht das der PB-Debugger?
ich suche gerade nach einer Möglichkeit (ähnlich wie es der Debugger kann) zur Laufzeit im Quellcode per Macro oder Procedure eine Aufrufsverfolgung zu integrieren.
Es gibt ja die Konstante #PB_Compiler_Line, nur leider gibt mir diese ja nur die Zeile des aktuellen Aufrufs zurück.
In diesem Beispiel möchte ich aber irgendwie an die Zeilennummer des Aufrufs Beispiel(), sodass ich ermitteln kann, in welche "echten" Zeile Beispiel() mit einer negativen Zahl aufgerufen wurde.
Code: Alles auswählen
Procedure Beispiel(Number.i)
If Number < 0
Debug #PB_Compiler_Line ; Gibt Zeile 3 aus
EndIf
EndProcedure
Beispiel(100) ; Zeile 7
Beispiel(0) ; Zeile 8
Beispiel(-2) ; Zeile 9
Code: Alles auswählen
Procedure Beispiel_Debug(Number.i, Line.i)
If Number < 0
Debug Line ; Gibt nun Zeile 13 aus
EndIf
EndProcedure
Macro Beispiel(Number)
Beispiel_Debug(Number, #PB_Compiler_Line)
EndMacro
Beispiel(100) ; Zeile 11
Beispiel(0) ; Zeile 12
Beispiel(-2) ; Zeile 13
Wie macht das der PB-Debugger?