Seite 2 von 3
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 12:11
von RSBasic
@Sicro
@NicTheQuick
NicTheQuick hat geschrieben:Das Macro kann man dann wie eine Variable verwenden.
Ich habe dein Code mit dem Code von #NULL getestet, aber scheint nicht zu funktionieren oder?
Code: Alles auswählen
Macro __MacroColon__
:
EndMacro
Macro __JoinMacroParts__(P1, P2=, P3=, P4=, P5=, P6=, P7=, P8=)
P1#P2#P3#P4#P5#P6#P7#P8
EndMacro
Macro __CreateMacro__(name,name2,macroBody)
__JoinMacroParts__(Macro name, name2, __MacroColon__, macroBody, __MacroColon__, EndMacro)
EndMacro
Macro DebuggerEnabled
0
EndMacro
Macro DebuggerOn
EnableDebugger
UndefineMacro __JoinMacroParts__(Debugger, Enabled)
__CreateMacro__(Debugger, Enabled, 1)
EndMacro
Macro DebuggerOff
UndefineMacro __JoinMacroParts__(Debugger, Enabled)
__CreateMacro__(Debugger, Enabled, 0)
DisableDebugger
EndMacro
DebuggerOn
If DebuggerEnabled = 1
DebuggerOff
EndIf
Debug "d"
Er müsste eigentlich "d" nicht ausgeben, weil DebuggerEnabled in dem Fall true ist. Oder ist das nicht möglich?
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 12:45
von NicTheQuick
In der Tat sehr merkwürdig. Das "hm3" und "hm4" ist nicht mehr da, dafür aber das "hm5" am Ende. Das ergibt alles keinen Sinn. Bestimmt ist das wieder zu viel für den armen PB-Compiler, wenn man so mit Macros umgeht.
Code: Alles auswählen
Macro __MacroColon__
:
EndMacro
Macro __JoinMacroParts__(P1, P2=, P3=, P4=, P5=, P6=, P7=, P8=)
P1#P2#P3#P4#P5#P6#P7#P8
EndMacro
Macro __CreateMacro__(name,name2,macroBody)
__JoinMacroParts__(Macro name, name2, __MacroColon__, macroBody, __MacroColon__, EndMacro)
EndMacro
Macro DebuggerEnabled
0
EndMacro
Macro DebuggerOn
EnableDebugger
UndefineMacro __JoinMacroParts__(Debugger, Enabled)
__CreateMacro__(Debugger, Enabled, 1)
EndMacro
Macro DebuggerOff
Debug "hm1" + DebuggerEnabled
UndefineMacro __JoinMacroParts__(Debugger, Enabled)
Debug "hm2" + DebuggerEnabled
__CreateMacro__(Debugger, Enabled, 0)
Debug "hm3" + DebuggerEnabled
DisableDebugger
Debug "hm4" + DebuggerEnabled
EndMacro
DebuggerOn
If DebuggerEnabled = 1
Debug "hm0"
DebuggerOff
Debug "hm5"
EndIf
Debug "d"
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 13:10
von #NULL
Nested Macros werden ja nicht wirklich unterstützt. Ich denke es passiert folgendes: Im body von Macro DebuggerOff wird bei CreateMacro ein nested macro body erzeugt, und dessen EndMacro verlässt den Macro-Body-Scope, so dass das DisableDebugger im Body von DebuggerOff den State direct verändert. So ganz sicher bin ich mir aber auch nicht. Ich verstehe auch folgendes nicht ("d" wird nicht ausgegeben):
Code: Alles auswählen
EnableDebugger
Debug "a"
Macro concat(a, b)
a#b
EndMacro
Macro enable
concat(Mac,ro) isEnabled
concat(EndMac,ro)
EnableDebugger
EndMacro
Macro disable
UndefineMacro isEnabled
DisableDebugger
EndMacro
Debug "b"
disable
Debug "c"
enable
Debug "d"
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 13:26
von NicTheQuick
Hab grad nicht so viel Zeit, aber vielleicht kann man hiermit was anfangen:
Code: Alles auswählen
Macro debugOn
MacroExpandedCount
EndMacro
Macro debugOff
MacroExpandedCount
EndMacro
Macro DebuggerOn
CompilerIf debugOn
Debug "on: " + Str(debugOn - debugOff)
CompilerEndIf
EndMacro
Macro DebuggerOff
CompilerIf debugOff
Debug "on: " + Str(debugOn - debugOff)
CompilerEndIf
EndMacro
DebuggerOn
DebuggerOn
DebuggerOn
DebuggerOff
DebuggerOn
DebuggerOff
DebuggerOff
DebuggerOff
DebuggerOff
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 13:36
von #NULL
#NULL hat geschrieben:Ich verstehe auch folgendes nicht...
Mit
--preprocess sehe ich, dass
enable einfach nur zu
aufgerlöst wird, also bis zum enthaltenen EndMacro. Das EnableDebugger danach wird einfach weggelassen.
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 15:10
von Josh
Ich habe das ganze mal in
'Feature Requests and Wishlists' gepostet.
Naja, hätte meinen Wunsch auch einen Frosch auf den Bauch tätowieren können. Die Chance dass was passiert, wäre in diesem Fall wohl gleich groß.
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 15:54
von NicTheQuick
Geht das denn?
Code: Alles auswählen
Macro debugOn
MacroExpandedCount
EndMacro
Macro debugOff
MacroExpandedCount
EndMacro
Macro DebuggerOn
CompilerIf debugOn And debugOn - debugOff = 0
EnableDebugger
Debug "EnableDebugger"
CompilerEndIf
EndMacro
Macro DebuggerOff
CompilerIf debugOff And debugOn - debugOff = -1
Debug "DisableDebugger"
DisableDebugger
CompilerEndIf
EndMacro
Debug 1
DebuggerOff
Debug 2
DebuggerOff
Debug 3
DebuggerOn
Debug 4
DebuggerOff
Debug 5
DebuggerOn
Debug 6
DebuggerOn
Debug 7
Wenn man es auch noch in Modulen nutzen möchte, muss man die Macros in ein Modul auslagern, das man dann überall includieren muss.
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 05.07.2019 19:11
von Sommertv
Schönen Abend,
dazu hätte ich eine Frage:
arbeitet der Purebasic Debugger als eigennständiger Debugger?
Ich denk jetzt gerade an meine Assembler Zeiten und an SoftIce...
Da konnte man über die Prefetch Queue heraus bekommen, ob der Debugger aktiv war.
Wenns jemand interessiert, vielleicht find ich noch irgendwo den Code, dann kann ich ihn hier posten...
Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 06.07.2019 09:27
von Josh
Sommertv hat geschrieben:arbeitet der Purebasic Debugger als eigennständiger Debugger?
Hi Sommertv,
Es geht nicht um den eigenständigen oder eingebauten Debugger. Ob ein Debugger in den Compileroptionen aktiviert ist, kann man ja mit #PB_Compiler_Debugger abfragen.
Es geht um EnableDebugger/DisableDebugger, mit diesen beiden Befehlen kann man den Debugger (falls in den Compileroptionen aktiviert) im Code ausschalten bzw. wieder einschalten. Das hat allerdings keinen Einfluß auf #PB_Compiler_Debugger, weil in diesem Fall der Debugger nur 'ein bisschen' deaktiviert wird. Ich glaube mit diesen beiden Befehlen wird nur die Debugausgabe sowie die Zeilenstopps deaktiviert, während intern der Debugger weiter läuft. Oder so ähnlich halt

Re: Abfrage ob EnableDebugger/DisableDebugger aktiviert
Verfasst: 06.07.2019 09:43
von Nino
NicTheQuick hat geschrieben:Geht das denn?
Das ist genial.
