Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Elster
Anmeldungsdatum: 16.06.2021 Beiträge: 3
|
Verfasst am: 16.06.2021, 23:14 Titel: Willkürliche Abstürze |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 17.06.2021, 00:01 Titel: |
|
|
* 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 |
|
|
Elster
Anmeldungsdatum: 16.06.2021 Beiträge: 3
|
Verfasst am: 17.06.2021, 06:16 Titel: |
|
|
* 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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 17.06.2021, 08:53 Titel: |
|
|
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 |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 17.06.2021, 09:45 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 17.06.2021, 10:04 Titel: |
|
|
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. _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 17.06.2021, 10:37 Titel: |
|
|
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 |
|
|
Elster
Anmeldungsdatum: 16.06.2021 Beiträge: 3
|
Verfasst am: 17.06.2021, 22:25 Titel: |
|
|
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 |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 18.06.2021, 00:23 Titel: |
|
|
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 |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 18.06.2021, 09:49 Titel: |
|
|
@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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 18.06.2021, 16:58 Titel: |
|
|
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 |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
|
|