Seite 1 von 1
Procedurepointer ermitteln mit #PB_Compiler_Procedure
Verfasst: 17.02.2023 21:31
von SMaag
kann man mit der Compiler Konstante #PB_Compiler_Procedure
die Adresse einer Procedure ermitteln.
@ #PB_Compiler_Procedure bringt leider einen Fehler
Code: Alles auswählen
Procedure Test()
Debug "Name :" + #PB_Compiler_Procedure
Debug "Pointer : " + @Test()
; Debug @#PB_Compiler_Procedure ; geht das irgendwie mit der Konstante?
EndProcedure
Test()
Debug OutPut
Name :Test
Pointer : 1703780
Re: Procedurepointer ermitteln mit #PB_Compiler_Procedure
Verfasst: 17.02.2023 21:57
von STARGÅTE
Die Adresse einer Prozedure erhältst du mit dem @ for dem Prozedurenamen, wie du es ja selber machst.
Was genau erwartest du denn von @#PB_Compiler_Procedure ?
Re: Procedurepointer ermitteln mit #PB_Compiler_Procedure
Verfasst: 17.02.2023 22:38
von mk-soft
Runtime library. Siehe PB-Hilfe
Re: Procedurepointer ermitteln mit #PB_Compiler_Procedure
Verfasst: 18.02.2023 10:59
von SMaag
Was genau erwartest du denn von @#PB_Compiler_Procedure ?
Ich wollte die letzen sagen wir mal 100.1000 ProcedureCalls loggen und das möglichst einfach!
Folgendes ist mir dan so eingefallen!
Damit wäre das einfach ein Macro-Aufruf am Anfang jeder Procedure gewesen und immer identisch!
Mit #cfg_ListCallsOn ist das dann über den Compiler schaltbar!
Code: Alles auswählen
#cfg_ListCallsOn = #True
Procedure ListProcedureCalls(ModuleName.s, ProcName.s, ptrProc.i)
; CODE
EndProcedure
Macro mac_ListCalls()
CompilerIf #cfg_ListCallsOn
ListProcedureCalls(#PB_Compiler_Module, #PB_Compiler_Procedure, @#PB_Compiler_Procedure())
CompilerEndIf
EndMacro
Procedure TestProcLog()
mac_ListCalls()
EndProcedure
Re: Procedurepointer ermitteln mit #PB_Compiler_Procedure
Verfasst: 18.02.2023 11:23
von STARGÅTE
Hm, dafür gibt es das Debugger-Tool:
Aufrufverfolgung -> Statistiken
Das kannst du im Programm aufrufen mit ShowCallstack() und siehst genau wie oft jede Prozedur aufgerufen wurde:
Code: Alles auswählen
Procedure Test1()
EndProcedure
Procedure Test2()
EndProcedure
Define J, I
ShowCallstack()
For J = 1 To 100
Test1()
For I = 1 To 10
Test2()
Next
Next
CallDebugger
Name Aufrufzähler
Test1() 100
Test2() 1000
Außerdem gibt es da auch die Programmanalyse, wenn du es sogar Zeilenweise haben möchtest.
Re: Procedurepointer ermitteln mit #PB_Compiler_Procedure
Verfasst: 20.02.2023 15:18
von SMaag
Hm, dafür gibt es das Debugger-Tool: Aufrufverfolgung -> Statistiken
Danke, das kannte ich noch nicht!
Damit dürfte sich das erledigt haben!