Mitprotokollieren / Erkennen, ob ein ESP zwischendurch abstürzt

Hi zusammen,

mal eine allgemeine Frage zum Thema Debugging:

WIe geht man denn am besten vor, wenn man herausfinden will, ob ein ESP8266 (oder auch einen Arduino) zwischendurch (z.B. irgendwann mal während des Tages oder Nachts) abstürzt und auch z.B. herausfinden will, warum?
Wenn ich nicht mehr mit dem Serial Port verbunden bin, krieg ich das ja unter Umständen gar nicht mit, oder? Wenn der abstürzt, wird ja ein Reset gemacht.

Gibt es hier clevere Lösungsansätze?
Klar, man könnte eine Log-Datei schreiben. Aber wenn der ESP abstürzt kann er ja nicht mehr schreiben, warum er abgestürzt ist.

Und wenn ich per Serial Monitor überwache wird der Inhalt des Serial-Monitors doch nach einem Reset gelöscht, oder?

Wie macht ihr sowas?

Viele Grüße
Daniel

Wenn Du den seriellen Datenstrom auf dem PC in eine Datei umleitest, bleibt der erhalten. Beim Neustart eine Ausgabe im Setup, um das zu erkennen.
Der ESP8266 / ESP32 sendet auch einen Restartgrund und evtl. auch einen Stacktrace, den Du mit dem Exception Decoder auswerten kannst.

Gruß Tommy

1 Like

Hi Tommy,

Dumme Frage? Wie macht man das?
Gibts da direkt in der Arduino IDE eine Funktion, um die serielle Ausgabe als Datei anzulegen? Oder muss das im Sketch erledigt werden, also z.B. eine Txt schreiben?

Viele Grüße
Daniel

Weder, noch. Du musst ein Terminalprogramm benutzen (z.B. HTerm).

Gruß Tommy

1 Like

mitbekommen:
du könntest einfach die millis() ausgeben (Serial, Display...) dann weist du auch ob es einen Reboot gab.

Warum:
da wird dir nur ein Log helfen dass du extern mitschreibst...

Okidoki, dann werd ich mir mal HTerm besorgen. Den Link hier hab ich mir grad auch noch ergoogelt:

Danke für eure Hilfe und schönen Abend.

Nicht-ESP Arduinos machen eher selten einen Reset,
wenn sie durch fehlerhaften Kode aufhören zu funktionieren.

In den meisten Fällen dürfte der Wachhund zubeißen, wenn mit "lang" laufenden Schleifen gearbeitet wird.

Gruß Tommy

Bei Arduinos müsste man das aber extra konfigurieren,
u.U. den Bootloader wechseln.

Ja, sorry, ich bezog mich nur auf die ESP.

Gruß Tommy

Da ich bisher nur mit nem UNO und nem MEGA den WDT auf 8 Sekunden hatte...
Was gibt es da zu beachten?

Soweit ich weiß, wird von manchen alten Bootloadern
die erste WDT Zeit nach einem Reset so kurz gesetzt,
dass setup nicht mehr dazu kommt einen vernünftigen Wert einzustellen.

1 Like

Wenn man mal ne Runde sucht, ja, dann findet sich da auch was
Das Problem tritt wohl auf den Nanos mit nem Oldbootloader auf.
Mal sehen, ob ich mir das merken kann....
Danke!

Das Problem hast du richtig beschrieben, aber nicht den richtigen Verursacher benannt.
Es ist nicht der Bootloader, welcher die Zeit kurz setzt, sondern der Reset.
Der Default nach einem Reset ist laut Datenblatt die kürzest mögliche Zeit.
Der WDT selber wird nicht beim Reset gestoppt.
Im Datenblatt ist der Default Wert x, also entweder unverändert, bzw der per Fuses eingestellte Wert..
Einzig aus dem Power on Reset, kommt das Bit gelöscht heraus.