Spielereien mit dem Debugger

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
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

Spielereien mit dem Debugger

Beitrag von ts-soft »

Die Debuggerlib enthält ein paar Funktionen, die manchmal recht nützlich sein könnten.

Der hier vorgestellte Import, sowie die Macros haben keinen Einfluss auf die Exe!
Wenn der Debugger aus ist, wird auch nichts hinzugefügt.

Code: Alles auswählen

 CompilerIf #PB_Compiler_Debugger
  Import ""
    PB_DEBUGGER_SendError(Message.p-ascii)
    PB_DEBUGGER_SendWarning(Message.p-ascii)
    PB_DEBUGGER_CheckLabel(*Label)
  EndImport
CompilerEndIf

Macro DebugError(error)
  CompilerIf #PB_Compiler_Debugger
    PB_DEBUGGER_SendError(error)
  CompilerEndIf
EndMacro

Macro DebugWarning(error)
  CompilerIf #PB_Compiler_Debugger
    PB_DEBUGGER_SendWarning(error)
  CompilerEndIf
EndMacro

Macro DebugCheckLabel(error)
  CompilerIf #PB_Compiler_Debugger
    PB_DEBUGGER_CheckLabel(error)
  CompilerEndIf
EndMacro

; Beispiel
Define temp

CompilerIf Defined(temp, #PB_Variable) = 0
  ; kein Fehler, da temp bekannt
  DebugError("Hallo mein Freund, die Variable 'temp' exitiert nicht!")
CompilerEndIf

Procedure test()
  ; in der Procedure ist temp nicht bekannt, also Fehler!
  CompilerIf Defined(temp, #PB_Variable) = 0
    DebugError("Hallo mein Freund, die Variable 'temp' exitiert nicht!")
  CompilerEndIf
EndProcedure

test()
Gruß

Thomas

// edit
Beispiel erweitert!

// edit 2
angepaßt für Linux
Zuletzt geändert von ts-soft am 26.04.2010 18:57, insgesamt 2-mal geändert.
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.
Bild
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: Spielereien mit dem Debugger

Beitrag von CSHW89 »

hey cool :allright: , die kannte ich noch gar nicht.
aber mal ne frage dazu. ist es eigentlich i-wie möglich die fehler, die in einer userlib entstehen, auch so darzustellen. also in der userlib ist ein fehler, dann wird die 'DebugError' funktion aufgerufen, und wenn der benutzer der userlib den debugger an hat, soll der fehler ausgegeben werden, und wenn nicht dann nicht.
lg kevin
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Spielereien mit dem Debugger

Beitrag von STARGÅTE »

Tachchen,

nett (kenn ich schon) aber wo du es hier noch mal schreibst, eine Frage:

Kann man die eigentliche Fehlermarkierung auch eine "Aufrufsebene" höher darstellen?

Beispiel:

Code: Alles auswählen

#MaxElementNumber = $FFFF

Procedure NewElement(Element)
  If Element >= 0 And Element <= $FFFF
    ; [...]
  Else
    DebugError("Elementnummer ist außerhalb des Bereiches: 0 - "+Str(#MaxElementNumber))
  EndIf
EndProcedure

NewElement(-6)
Nun ist ja die Fehlermarkierung beim DebugError ein bisschen sinnfrei.
Es wäre hier besser die Markierung beim Aufruf der übergeordneten Funktion darzustellen:
Also bei NewElement(-6)

Geht das ?
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
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

Re: Spielereien mit dem Debugger

Beitrag von ts-soft »

CSHW89 hat geschrieben:hey cool :allright: , die kannte ich noch gar nicht.
aber mal ne frage dazu. ist es eigentlich i-wie möglich die fehler, die in einer userlib entstehen, auch so darzustellen. also in der userlib ist ein fehler, dann wird die 'DebugError' funktion aufgerufen, und wenn der benutzer der userlib den debugger an hat, soll der fehler ausgegeben werden, und wenn nicht dann nicht.
lg kevin

Code: Alles auswählen

RunProgram(#PB_Compiler_Home + "tailbite\Helper Libraries\TB_Debugger.pb")
:wink:
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.
Bild
Benutzeravatar
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

Re: Spielereien mit dem Debugger

Beitrag von ts-soft »

@STARGÅTE

Geht bestimmt, habe aber in der Richtung nur die Funktion: PB_DEBUGGER_SetLine() gefunden,
die keinen Parameter erwartet, ich weiß also nicht wie das funktioniert :(
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.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Spielereien mit dem Debugger

Beitrag von RSBasic »

@ts-soft
Cool, geile Idee und Umsetzung :allright:
Sowas hab ich noch nie ausprobiert, gut zu wissen, danke :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Little John

Re: Spielereien mit dem Debugger

Beitrag von Little John »

Interessant.
Funktioniert aber hier leider nicht mit PB 4.41 unter Ubuntu 9.10.
Fehlermeldung hat geschrieben:PureBasic - Linker error
--------------------------------
gcc: Debugger.lib: No such file or directory
Gruß, Little John
Benutzeravatar
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

Re: Spielereien mit dem Debugger

Beitrag von ts-soft »

Little John hat geschrieben:Interessant.
Funktioniert aber hier leider nicht mit PB 4.41 unter Ubuntu 9.10.
fixed
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.
Bild
Little John

Re: Spielereien mit dem Debugger

Beitrag von Little John »

Danke!
Antworten