Seite 1 von 2
PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 19.02.2025 21:00
von Blitzer
IDE build on 02/12/2025 [16:01] by fred
Branch: v6.20
Falsche Anzeige bei GOSUB im Debugger. Absturz unter WIN11 oder unter Linux (Ubuntu 24.04.2 LTS)
Der erste Quellcode folgt immer einer Idee. Um Spaghetti-Code bei der Umsetzung zu verhindern und um schnell die ersten Ergebnisse zu bekommen, verwende ich gerne Unterroutinen als einfaches Skelett. Später werden Proceduren, IF's, weniger Variablen, usw. eingearbeitet. Subroutinen sind leider aus der Mode gekommen und werden seltener verwendet ...
Code: Alles auswählen
; Sprungmarke GOSUB
; Anzeige: 5 Werte, danach Absturz
;
Gosub SUB_4
Gosub SUB_2
Gosub SUB_1
Gosub SUB_3
;
SUB_1:
Debug Str(1)
Return
;
SUB_2:
Debug Str(2)
Return
;
SUB_3:
Debug Str(3)
Return
;
SUB_4:
Debug Str(4)
Return
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 19.02.2025 21:23
von jacdelad
Unabhängig von dem was hier passiert oder nicht...ich würde dir von der Verwendung von Gosub und Foto abraten. Es gibt keinen Grund die zu benutzen, Prozeduren sind dafür besser geeignet. Wenn es nach mir ginge, könnten Gosub/Foto komplett aus PureBasic entfernt werden.
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 19.02.2025 21:40
von mk-soft
Fehler im Programm ...
Code: Alles auswählen
; Sprungmarke GOSUB
; Anzeige: 5 Werte, danach Absturz
;
Gosub SUB_4
Gosub SUB_2
Gosub SUB_1
Gosub SUB_3
End ; <-----------------------------------
;
SUB_1:
Debug Str(1)
Return
;
SUB_2:
Debug Str(2)
Return
;
SUB_3:
Debug Str(3)
Return
;
SUB_4:
Debug Str(4)
Return
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 20.02.2025 00:56
von HeX0R
mk-soft hat geschrieben: 19.02.2025 21:40
Fehler im Programm ...
Richtig, und das ist auch ein sehr schönes Beispiel, weshalb Gosub eben eher nicht verwendet werden sollte.
Goto bzw. Foto (

) kann in Ausnahmefällen aber durchaus Sinn machen.
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 22.02.2025 12:08
von PIC18F2550
Gosub ist schneller und spart Ressourcen.
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 22.02.2025 12:41
von H.Brill
GOSUB und GOTO waren gedacht, es Einsteigern mit GW-Basic - Hintergrund den Einstieg etwas zu erleichtern und sollte
bei fortgeschrittenen Kenntnissen von PB nicht mehr angewendet werden. Gibt es auch bei (X)Profan und dort wird ebenfalls
bei besserer Kenntnis davon abgeraten.
Ob es bei PB schneller und ressourcenfreundlicher ist, weiß ich nicht. Bei (X)Profan jedenfalls sind die Progs (Prozeduren)
schneller und daher zu bevorzugen. Kann bei PB aber anders sein. Ich könnte mir denken, daß PB, das damals in ASM übersetzt hatte,
wegen den Sprungmarken schneller ist. In normalem ASM gab es ja sonst nichts anderes für Schleifen bzw. Unterprogramme.
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 22.02.2025 14:10
von jacdelad
Auch wenn es schneller ist...genau dieser Thread zeigt, warum man es nicht nutzen sollte. Es ist unübersichtlich.
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 22.02.2025 15:18
von H.Brill
jacdelad hat geschrieben: 22.02.2025 14:10
Auch wenn es schneller ist...genau dieser Thread zeigt, warum man es nicht nutzen sollte. Es ist unübersichtlich.
Das stimmt. Damals nannte man sowas Spaghetti-Code . Das ging mir schon damals auf den Geist

Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 22.02.2025 15:31
von PIC18F2550
Gosub ist wie eine Funktion nur das die Variablen nicht gekapselt sind.
An das End muste ich mich auch erst gewöhnen.
Mittlerweile setze ich am anfang einen Goto START und überspringe alle Subroutinen die ich am Anfang hineinstelle.
Ich mag diese "C"aspersprache nicht und finde es einfach traurig wie Basic langsam zu C umgestaltet wird.
Re: PB 6.20 - Bug bei GOSUB -> Absturz - [WIN11] [Linux]
Verfasst: 22.02.2025 16:37
von STARGÅTE
PIC18F2550 hat geschrieben: 22.02.2025 15:31
Gosub ist wie eine Funktion nur das die Variablen nicht gekapselt sind.
... und das Gosub keine Rückgabewert hat.
... und das man keine Argumente übergeben kann.
... und keine Rekursion möglich ist.
... und das man nicht aus Select (und Schleifen?) zurückspringen darf.
Aber ja, ansonsten ist es eigentlich fast das gleiche.