DisableDebugger
-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
DisableDebugger
Guten Morgen.
Auch wenn ich beim Programmieren immer den Debugger mitlaufen lasse, so habe ich dessen FUnktionen kaum genutzt. Der Debugger verlangsamt das Programm angeblich um einen Faktor 6. Bei einem neuen Kurzprogramm (recht viele LinkedListvergleich in Schleifen) dauert die Ausführung mit Debugger ca. 155 Sekunden, OHNE dauert sie gerade mal 8 Sekunden, ist also noch etwas schneller ohne Debugger.
Da die Berechnungen noch intensiver werten, läßt sich mit Debugger kaum noch arbeiten wenn ich bei jeder Ausführung Minuten bzw. bald ne halbe Stunde warten muß.
Dazu gibt es wohl
DisableDebugger
aber wie funktioniert dieser Befehler bzw. wie wird er deaktiviert?
Ich dachte bisher nur EnableDebugger aktieviert ihn wieder und was zwischen beiden steht läuft so, als sei es ohne Debugger gestartet. Was dann für mich auch bedeutet, daß z.B. auch "debug Texte" NICHT ausgegeben werden.
Bei mir aber läuft das Programm dann trotzdem so schneckenlangsam und die Debugtexte werden auch ausgegeben.
Was mache ich falsch?
Oder läuft das in der neuen PB 4.20 Version noch fehlerhaft?
Gruß
Toshy
[edit]
Nachtrag:
Vielleicht habe ich es nun selbst rausgefunden. Die Befehle sind ja Compilerbefehle die wohl wärend des Kompelierens den Kompiler anweisen hier und da dies und das zu machen.
Das heißt dann wohl "leider" das man das "Disable" NICHt vor einem Procedureaufruf schreiben kann damit diese schnell ausgeführt wird, sondern direkt in die Procedure bzw. im Code davor einfügen muß.
Ist jetzt für mich auch recht logisch wenn ich darüber nachdenke.
Ich wollte diesen Beitrag daher eigentlich löschen, aber ich denke, daß wird dem einen oder anderen auch mal so gegangen sein. Daher wäre es sicher gut, wenn man in die Hilfedatei einen Kurzen Absatzt schreibt der dies etwas besser erklärt.
Auch wenn ich beim Programmieren immer den Debugger mitlaufen lasse, so habe ich dessen FUnktionen kaum genutzt. Der Debugger verlangsamt das Programm angeblich um einen Faktor 6. Bei einem neuen Kurzprogramm (recht viele LinkedListvergleich in Schleifen) dauert die Ausführung mit Debugger ca. 155 Sekunden, OHNE dauert sie gerade mal 8 Sekunden, ist also noch etwas schneller ohne Debugger.
Da die Berechnungen noch intensiver werten, läßt sich mit Debugger kaum noch arbeiten wenn ich bei jeder Ausführung Minuten bzw. bald ne halbe Stunde warten muß.
Dazu gibt es wohl
DisableDebugger
aber wie funktioniert dieser Befehler bzw. wie wird er deaktiviert?
Ich dachte bisher nur EnableDebugger aktieviert ihn wieder und was zwischen beiden steht läuft so, als sei es ohne Debugger gestartet. Was dann für mich auch bedeutet, daß z.B. auch "debug Texte" NICHT ausgegeben werden.
Bei mir aber läuft das Programm dann trotzdem so schneckenlangsam und die Debugtexte werden auch ausgegeben.
Was mache ich falsch?
Oder läuft das in der neuen PB 4.20 Version noch fehlerhaft?
Gruß
Toshy
[edit]
Nachtrag:
Vielleicht habe ich es nun selbst rausgefunden. Die Befehle sind ja Compilerbefehle die wohl wärend des Kompelierens den Kompiler anweisen hier und da dies und das zu machen.
Das heißt dann wohl "leider" das man das "Disable" NICHt vor einem Procedureaufruf schreiben kann damit diese schnell ausgeführt wird, sondern direkt in die Procedure bzw. im Code davor einfügen muß.
Ist jetzt für mich auch recht logisch wenn ich darüber nachdenke.
Ich wollte diesen Beitrag daher eigentlich löschen, aber ich denke, daß wird dem einen oder anderen auch mal so gegangen sein. Daher wäre es sicher gut, wenn man in die Hilfedatei einen Kurzen Absatzt schreibt der dies etwas besser erklärt.
1. Win10
PB6.1
PB6.1
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
EnableDebugger / DisableDebugger: habe ich bisher noch nie benötigt. Ich
benutze jaPBe und drücke F6, wenn ich meinen Code mit Debugger starten
will; ansonsten F5.
Zu Deinem Problem: Nachfolgender Code gibt bei mir lediglich 1 und 3 aus.
Scheint also zu funktionieren
Grüße ... Kiffi
benutze jaPBe und drücke F6, wenn ich meinen Code mit Debugger starten
will; ansonsten F5.
Zu Deinem Problem: Nachfolgender Code gibt bei mir lediglich 1 und 3 aus.
Scheint also zu funktionieren
Code: Alles auswählen
Debug "1"
DisableDebugger
Debug "2"
EnableDebugger
Debug "3"
a²+b²=mc²
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
@Kiffi
sein Problem ist aber folgendes:
sein Problem ist aber folgendes:
Code: Alles auswählen
Procedure test()
Debug "2"
EndProcedure
Debug "1"
DisableDebugger
test()
EnableDebugger
Debug "3"
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Kaeru Gaman hat geschrieben:@Kiffi
sein Problem ist aber folgendes:Code: Alles auswählen
Procedure test() Debug "2" EndProcedure Debug "1" DisableDebugger test() EnableDebugger Debug "3"
Code: Alles auswählen
Procedure test()
DisableDebugger
Debug "2"
EnableDebugger
EndProcedure
Debug "1"
test()
EnableDebugger
Debug "3"
anders. Jeder Scope ist extra zu behandeln, wichtig vor allem für Threads.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Mit Scope hat das nichts zu tun. Enable/DisableDebugger ist ein Keyword wie CompilerIf, oder EnableExplicit. Es bestimmt wie die darauf folgenden Codezeilen compiliert werden, egal ob da Prozeduren drin sind oder nicht. Es betrifft also alle Debug statements (wichtiger noch: die runtime-Checks) die zwischen einem DisableDebugger und EnableDebugger im Code stehen, nicht die dazwischen ausgeführt werden. (wie man ja an den Beispielen sieht)ts-soft hat geschrieben:So ist es richtig, der Debugger sieht nicht den Source, der arbeitet
anders. Jeder Scope ist extra zu behandeln, wichtig vor allem für Threads.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
ahja, danke Freak, also so:
Code: Alles auswählen
DisableDebugger
Procedure test()
Debug "2"
EndProcedure
EnableDebugger
Debug "1"
test()
Debug "3"
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 713
- Registriert: 22.03.2005 00:29
- Computerausstattung: Computer und Strom vorhanden
- Wohnort: LK Wolfenbüttel
@Kaeru Gaman und Kiffi:
Die beiden Befehle muß man nutzen wenn man den Debugger nutzen will, aber NICHT für DEN GESAMTEN Code. Ich muß den Debugger nutzen, aber ich durchlaufe z.B. im Code schleifen die mindestensd 25 000 hoch 25 000 mal durchlaufen. Mit Debugger kann man da ein Mittagsschläfchen machen. FÜR DIESEN CODEteil muß dann das debuggen ausgeschaltet werden was nur VOR dem kompelieren geschehen kann. Denn soweit ich das vermute ist es nicht so, daß der Debugger den wir sehen ein zweites PRotgramm ist welches unser eigenes Programm wärend der Ausführung überwacht, sondern der Debugger wärend des kompelierens zusätzlich Code in "unseren Code" einfügt. Für jede Zeile (jede Befehle / Funktion) von uns werden wohl mehrere weitere Zeilen MITKOMPILIERT.
Kaeru Gaman, du hast "mein Problem" richtig er kannt.
Es ist jetzt wo ich es selbst erkannt habe ja keines mehr. Auch wenn ich jetzt beim Debuggen ein wenig anders vorgehen muß. Aber wer das nicht weiß oder von sich aus versteht steht da ohne kurze Erklärung "für Dumme"
in der Hilfedatei vor ner bunten Wand und denkt "was hab ich denn heute geKIFFIt" 
@ts-soft:
Yip. Hatte mir das als ich den Beitrag eröffnete nicht durch den Kopf gehen lassen, war aber Minuten später klar. Hatte es also schon selbst gleich richtig hinbekommen. Aber es sollte vielleicht kurz mit in die Hilfe aufgenommen werden. Sollte aber jemand der Englisch beherrscht weiterleiten.
Ob Disable nun in der Procedure steht oder außerhalb ist egal, aber da wo es im Code steht wird der Befehl genutzt. Proceduren hin oder her
Jemand der sich keine Gedanken darüber macht wie der Debugger funktioniert kommt da vielelicht nicht drauf und versucht es wie in deinem Beispiel oder wie ich zuerst und wundert sich warum es nicht klappt wie gewünscht.
Daher mein Vorschlag das erklärend mit in die Hilfedatei aufzunehmen.
Zwar werden diese Befehle selten genutzt wie ich vermute, aber bei rechenintensivem Code / vielen Schleifendurchläufen kommt man nicht darum herum.
Die beiden Befehle muß man nutzen wenn man den Debugger nutzen will, aber NICHT für DEN GESAMTEN Code. Ich muß den Debugger nutzen, aber ich durchlaufe z.B. im Code schleifen die mindestensd 25 000 hoch 25 000 mal durchlaufen. Mit Debugger kann man da ein Mittagsschläfchen machen. FÜR DIESEN CODEteil muß dann das debuggen ausgeschaltet werden was nur VOR dem kompelieren geschehen kann. Denn soweit ich das vermute ist es nicht so, daß der Debugger den wir sehen ein zweites PRotgramm ist welches unser eigenes Programm wärend der Ausführung überwacht, sondern der Debugger wärend des kompelierens zusätzlich Code in "unseren Code" einfügt. Für jede Zeile (jede Befehle / Funktion) von uns werden wohl mehrere weitere Zeilen MITKOMPILIERT.
Kaeru Gaman, du hast "mein Problem" richtig er kannt.
Es ist jetzt wo ich es selbst erkannt habe ja keines mehr. Auch wenn ich jetzt beim Debuggen ein wenig anders vorgehen muß. Aber wer das nicht weiß oder von sich aus versteht steht da ohne kurze Erklärung "für Dumme"


@ts-soft:
Yip. Hatte mir das als ich den Beitrag eröffnete nicht durch den Kopf gehen lassen, war aber Minuten später klar. Hatte es also schon selbst gleich richtig hinbekommen. Aber es sollte vielleicht kurz mit in die Hilfe aufgenommen werden. Sollte aber jemand der Englisch beherrscht weiterleiten.
Ob Disable nun in der Procedure steht oder außerhalb ist egal, aber da wo es im Code steht wird der Befehl genutzt. Proceduren hin oder her

Jemand der sich keine Gedanken darüber macht wie der Debugger funktioniert kommt da vielelicht nicht drauf und versucht es wie in deinem Beispiel oder wie ich zuerst und wundert sich warum es nicht klappt wie gewünscht.
Daher mein Vorschlag das erklärend mit in die Hilfedatei aufzunehmen.
Zwar werden diese Befehle selten genutzt wie ich vermute, aber bei rechenintensivem Code / vielen Schleifendurchläufen kommt man nicht darum herum.
1. Win10
PB6.1
PB6.1