Seite 1 von 1

Debuggen in SpiderBasic / Fehlersuche

Verfasst: 25.06.2017 23:29
von SBond
Hi Leute,

Die Debug-Möglichkeiten sind in SpiderBasic ....naja recht überschaubar. Gibt es eine Möglichkeit die Fehlersuche zu verbessern?

Folgendes Beispiel:

Code: Alles auswählen

Procedure CloseWindowEvent()
	CloseWindow(EventWindow()) ; Close the specific window
EndProcedure

OpenWindow		(#PB_Any, 0, 0, 800, 600, "Test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Debug "ich lebe"
ImageGadget		(#PB_Any, 10, 10, 780, 580, 0, #PB_Image_Border)
Debug "lebe ich noch?"

BindEvent(#PB_Event_CloseWindow, @CloseWindowEvent())
Das ImageGadget wird ohne gültiges Image erstellt. Dadurch wird der Nachfolgende Code nicht mehr ausgeführt. Hier ist der Fehler noch recht schnell zu finden, aber bei größeren Projekten kann das echt problematisch werden. Letztens hatte ich auch mit Speicherlecks zu kämpfen (Browser hat ca. 16GB Ram gefressen).

viele Grüße,
Martin

Re: Debuggen in SpiderBasic / Fehlersuche

Verfasst: 25.06.2017 23:50
von Kiffi
SBond hat geschrieben:Dadurch wird der Nachfolgende Code nicht mehr ausgeführt.
bei Dir nicht? Bei mir schon.

Wenn ich anstelle der 0 eine -1 einfüge, um einen Fehler zu provizieren, bekomme ich:
Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D'
Diese Fehlermeldung sieht man allerdings nur, wenn man die Browser-Console öffnet.

Hier ein Tipp, um die Fehlermeldung im Debug-Fenster ausgeben zu lassen:

Code: Alles auswählen

! try {

[Hier Deinen kompletten Code einfügen]

! } catch (err) {
!   spider.debug.Print(err);
! }
Grüße ... Peter

Re: Debuggen in SpiderBasic / Fehlersuche

Verfasst: 26.06.2017 00:22
von SBond
Kiffi hat geschrieben:bei Dir nicht? Bei mir schon.
jap, bei mir nicht. Ich lasse es über Chrome ausführen, da dort abgestürzte Tabs einzeln geschlossen werden können (im Gegensatz zu Firefox, der bei mir komplett einfriert)


Danke für den Tipp :)
Das ist ja fast wie C++ :mrgreen:

Mit Try/Catch bekomme ich dann folgende Debugausgabe:

Code: Alles auswählen

ich lebe
TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'