You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: Sitzungsklammer in fault.log schliessen, Fehlerdiagnose dokumentieren
Die Startzeile allein sagt nur, dass der Prozess lief. Erst mit einer Endzeile
laesst sich der entscheidende Fall auseinanderhalten:
Start + Ende -> sauber beendet
Start + Traceback -> Python-Fehler, das Programm hat ihn gesehen
Start und sonst nichts -> Prozess hart abgeraeumt, KEIN Python-Fehler
Im Terminal sehen die letzten beiden Faelle gleich aus - Steuerzeichen-Muell
und sonst nichts. Ein Signalhandler hilft unter Windows nicht weiter: ein
Abbruch von aussen laeuft dort ueber TerminateProcess und liefert dem Ziel kein
abfangbares Signal. Die FEHLENDE Endzeile ist der einzige Beleg.
Die Endzeile haengt an atexit und ist damit an denselben Pfad gebunden wie ein
regulaeres Programmende. Belegt in beide Richtungen: bei sauberem Ende stehen
beide Zeilen da, bei hart abgeraeumtem Prozess nur die Startzeile.
Nebenbei den Typ von _fault_log praezisiert - object kennt weder write noch
flush, mypy hat das zu Recht bemaengelt.
Doku
----
Alle READMEs (deutsch und englisch) haben jetzt einen Abschnitt "Wenn etwas
schiefgeht": welche der beiden Dateien wofuer zustaendig ist, wie sich die drei
Faelle unterscheiden lassen und warum man unter Windows besser ueber run.ps1
startet.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.de.md
+31Lines changed: 31 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -300,6 +300,37 @@ ein Fehler beim Auslesen) führt zu Englisch.
300
300
301
301
---
302
302
303
+
## Wenn etwas schiefgeht
304
+
305
+
Stuerzt das Programm ab, landet der Bericht auf Platte statt nur im Terminal -
306
+
zwei Dateien neben den Einstellungen, beide im Speicherort-Tab der
307
+
Einstellungen verlinkt, sobald es sie gibt:
308
+
309
+
| Datei | Wofuer |
310
+
| --- | --- |
311
+
|`last-crash.txt`| Python-Fehler samt Traceback. Wird geschrieben, **bevor** der Fehlerdialog laeuft - faellt dieser beim Neuaufbau selbst mit, waere der Bericht sonst verloren. |
312
+
|`fault.log`| Alles darunter: native Speicherzugriffsfehler, Stack-Overflow, fataler Interpreter-Fehler. Solche Abstuerze laufen an Pythons Fehlerbehandlung vorbei. |
313
+
314
+
Beide Dateien werden **angehaengt**, nicht ersetzt - ein zweiter Absturz
315
+
verdeckt den ersten nicht.
316
+
317
+
`fault.log` bekommt ausserdem je Programmlauf eine Start- und eine Endzeile.
318
+
Damit ist ablesbar, was passiert ist:
319
+
320
+
| Was in der Datei steht | Was es bedeutet |
321
+
| --- | --- |
322
+
| Start, Traceback, Ende | Python-Fehler, das Programm hat ihn gesehen |
Copy file name to clipboardExpand all lines: README.md
+31Lines changed: 31 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -300,6 +300,37 @@ environment - German only for a demonstrably German-speaking environment, everyt
300
300
301
301
---
302
302
303
+
## When something goes wrong
304
+
305
+
If the program crashes, the report is written to disk instead of only to the
306
+
terminal - two files next to the settings, both linked from the storage tab in
307
+
the settings once they exist:
308
+
309
+
| File | What for |
310
+
| --- | --- |
311
+
|`last-crash.txt`| Python errors including the traceback. Written **before** the error dialog runs - if that dialog dies during its own re-layout, the report would otherwise be lost. |
0 commit comments