Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Willkürliche Abstürze

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Elster



Anmeldungsdatum: 16.06.2021
Beiträge: 3

BeitragVerfasst am: 16.06.2021, 22:14    Titel: Willkürliche Abstürze Antworten mit Zitat

Liebe Programmierfreunde,

ich arbeite an einem für mich sehr wichtigen Programm, und seit heute kommt es zu scheinbar völlig willkürlichen Abstürzen. Da ich in meinen heutigen Programmänderungen trotz gründlicher Suche keinen Fehler finden konnte, bin ich auf das Backup von gestern abend gegangen, und das stürzt jetzt auch willkürlich ab. Ich versuche mehrmals, die ausführbare Datei zu starten, und mal läuft sie tadellos, mal stürzt sie ab.

Obwohl ich nichts am Quellcode, an den Eingabedateien oder sonst irgend etwas am Computer geändert habe.

Das widerpricht meiner gesamten Programmiererfahrung. Das einzige, was ich mir vorstellen könnte, wäre dass irgendwelche Hintergrundprozesse oder automatischen Updates zeitweilig Arbeitsspeicher in Anspruch nehmen und dadurch Konflikte verursachen. Allerdings ist die Datenmenge, die ich mit meinem Programm verarbeite, mit rund 1500 KB doch eher klein.

An einer Überschreitung der Feldgrößen der Variablen kann es, glaube ich nicht liegen, denn einerseits teste ich dort jede Änderung und habe Kontrollen zum Abfangen zu Großer Zähler-Variablen programmiert. Zum anderen müsste ein Fehler bei mehrfachem Programmaufruf mit identischen Eingabedaten jedes mal zum Absturz führen und nicht willkürlich nur bei einigen Aufrufen.

Um die Sache einordnen zu können: Ich bin kein Informatiker, programmiere aber seit den 1980er Jahren privat (u.a. C64 BASIC und Assembler) und beruflich (u.a. FORTRAN77/90). Mein Programm besteht aus zwei .bas-Datei mit insgesamt knapp 8000 Zeilen. Es ist etwas Mathe-lastig mit grafischer Ergebnisdarstellung. Es ist so geschrieben, dass im zweiten Programmteil jeweils einer aus den im ersten Programmteil berechneten Datensätze ausgewählt werden kann. Die ausgewählten Daten werden dann aus der .txt-Datei eingelesen für die grafische Darstellung, und anscheinend passieren beim Einlesen oder danach die Abstürze. Die Festplatte arbeitet soweit ich erkennen kann fehlerfrei.

Da es sich, wie erwähnt, um ein für mich sehr wichtiges Programm handelt, bin ich kurz vor dem Verzweifeln und wäre für jeden hilfreichen Hinweis dankbar.

Viele Grüße aus dem hochsommerlich Großraum Hamburg
Elster
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 16.06.2021, 23:01    Titel: Antworten mit Zitat

* Verwendest du Threads? oder Dyanamisch erzeugten Speicher (Allocate, CAllocate, New, ...) ?

* Nutzt du LinkedList's ?

* Prüfst du vor den Berechnungen (vorallem bei Divisionen) ob der Teiler <> 0 ist?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elster



Anmeldungsdatum: 16.06.2021
Beiträge: 3

BeitragVerfasst am: 17.06.2021, 05:16    Titel: Antworten mit Zitat

* Verwendest du Threads? oder Dyanamisch erzeugten Speicher (Allocate, CAllocate, New, ...) ?
-> Nein

* Nutzt du LinkedList's ?
-> Nein

* Prüfst du vor den Berechnungen (vorallem bei Divisionen) ob der Teiler <> 0 ist?
-> immer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 17.06.2021, 07:53    Titel: Antworten mit Zitat

Zitat:
An einer Überschreitung der Feldgrößen der Variablen kann es, glaube ich nicht liegen, denn einerseits teste ich dort jede Änderung und habe Kontrollen zum Abfangen zu Großer Zähler-Variablen programmiert. Zum anderen müsste ein Fehler bei mehrfachem Programmaufruf mit identischen Eingabedaten jedes mal zum Absturz führen und nicht willkürlich nur bei einigen Aufrufen.

Kompiliere trotzdem mal mit der Compileroption -exx nur um zu schauen, ob da doch was übersehen wurde. Bei fehlerhaften Speicherzugriff muss es ja auch nicht notwendigerweise zu einem Absturz kommen - das würde zu "willkürlichen Abstürzen" gut passen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 17.06.2021, 08:45    Titel: Antworten mit Zitat

Evtl. auch einmal die Hardware prüfen, z.B. mit Memtest86.

Dies nur, um Dinge wie ein unzuverlässiger RAM-Riegel ausschliessen zu können.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 17.06.2021, 09:04    Titel: Antworten mit Zitat

Ein kleiner Tip von jemandem, der schon mehr als einmal ein Programm mit nicht jugendfreien Ausdrücken belegt hat: Solche sporadischen Abstürze können viele Ursachen haben, und bevor du in deinem Programm nach einem Fehler suchst, der gar nicht vorhanden ist, solltest du es -falls möglich- einmal probeweise auf einem anderen Rechner laufen lassen und sehen, was dann passiert.

Gruß
grindstone

EDIT:
Upps, ich sehe gerade, dreael war schneller. lächeln
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 17.06.2021, 09:37    Titel: Antworten mit Zitat

sofern du Linux nutzt, oder die möglichkeit besitzt unter dein Prog unter Linux laufen zu lassen, dann versuche es mal mit "valgrind".

Ansonsten wird's sehr schwierig, wenn man den code nicht vor Augen bekommt.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elster



Anmeldungsdatum: 16.06.2021
Beiträge: 3

BeitragVerfasst am: 17.06.2021, 21:25    Titel: Antworten mit Zitat

Aktueller Stand: Habe heute morgen mehrmals versucht, das Programm zu starten. In etwa der Hälfte der Fälle Absturz, im Rest der Fälle problemlose Programmausführung. Wollte mich dann auf die Fehlersuche machen, indem ich folgende Zeilen eingefügt habe:

ON ERROR GOTO errorhandler

errorhandler:
PRINT "Fehler #" & ERR & " ist aufgetreten!"
PRINT "Beliebige Taste zum Beenden"
SLEEP
END

Seitdem läuft das Programm bei jedem Start korrekt ab. Aber der errorhandler wurde nie angelaufen, jedenfalls wurden die Printbefehle und der Sleep nicht ausgeführt. Das soll einer verstehen!

Habe im Laufe des Tage noch einige harmlose Veränderungen am Programm vorgenommen (einige Draw-Befehle usw.) aber keinen fundamentalen Fehler gefunden. Prüfe aber morgen trotzdem nochmal die Arrays, die sind schon etwas komplex.

Programm läuft derzeit. Hardware verursacht auch keine Probleme, soweit ich das als Nicht-Elektroniker beurteilen kann. Den Gedanken mit einem Testlauf auf einem anderen Computer hatte ich auch schon. Das werde ich probieren, wenn es wieder zu Abstürzen kommt.

Kann man die -exx Option eigentlich auch beim Arbeiten in der FBIde nutzen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 17.06.2021, 23:23    Titel: Antworten mit Zitat

Ansich ist es natürlich gut, das es läuft ... aber, der große nachteil ist der versteckte Bug, der jederzeit wieder auftreten kann, und im schlimmsten falle bekommste die app genau dann nicht zum laufen, wenn du sie dringend brauchst. Du solltest dich also auf jeden fall um eine behebung bemühen, bzw. die Ursache auf jeden Fall ermitteln.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 18.06.2021, 08:49    Titel: Antworten mit Zitat

@Elster: Hast du das Programm auch richtig compiliert?
Zitat:
"Um ON ERROR in Ihrem Programm verwenden zu können, müssen Sie den Compiler mit der Kommandozeilenoption -e, -ex oder -exx aufrufen. Anderenfalls wird kein Sprung ausgeführt, der Befehl verbraucht aber dennoch Prozessorzeit."


Hauptverdächtige bei Grafikanwendungen sind übrigens nicht oder falsch gesetzte Pointer. Deshalb sollten neu generierte Pointer immer auf <> 0 getestet und ungültig gewordene Pointer sofort auf 0 gesetzt werden.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 18.06.2021, 15:58    Titel: Antworten mit Zitat

Elster hat Folgendes geschrieben:
Kann man die -exx Option eigentlich auch beim Arbeiten in der FBIde nutzen?

Du solltest bei FBIde die Compile-Optionen einstellen können. Ich arbeite nicht mit FBIde und kann daher nichts genaueres sagen, aber wenn du hier das Bild anschaust, muss der Optionsschalter in das Feld "Compile-Befehl" hinein.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 30.06.2021, 14:08    Titel: -exx Compiler Parameter in FBIDE setzen Antworten mit Zitat

nemored hat Folgendes geschrieben:
Elster hat Folgendes geschrieben:
Kann man die -exx Option eigentlich auch beim Arbeiten in der FBIde nutzen?

Du solltest bei FBIde die Compile-Optionen einstellen können. Ich arbeite nicht mit FBIde und kann daher nichts genaueres sagen, aber wenn du hier das Bild anschaust, muss der Optionsschalter in das Feld "Compile-Befehl" hinein.

Hier ist das "-exx" sogar mit auf dem Screenshot drauf:
https://www.freebasic-portal.de/tutorials/installation-einrichtung-freebasic-4-s2.html
lächeln
_________________

Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz