Einheit 7 / 11

Debugging und Crash-Analyse mit künstlicher Intelligenz

Gewinne:

  • Möglichkeit, mögliche Grundursachen schnell einzugrenzen, indem Absturzaufzeichnungen (Stack-Traces) mit dem relevanten Code- und Szenariokontext an die künstliche Intelligenz übergeben werden
  • Fähigkeit, die Grundursache dauerhaft zu beheben, anstatt die Diagnose der KI als Hypothese im Code zu validieren und das Symptom zu testen und zum Schweigen zu bringen
  • Schutz der Privatsphäre beim Debuggen durch Maskieren persönlicher Daten in Absturzaufzeichnungen und -protokollen

Jede Anwendung gibt Fehler; Was einen guten Entwickler auszeichnet, ist die Geschwindigkeit, mit der er Fehler findet und behebt. Das mobile Debuggen – das Finden und Beheben der Ursache eines Problems – ist besonders schwierig, da der Fehler auf dem Gerät des Benutzers auftritt, in einer Umgebung, die Sie nicht sehen können. Meistens haben Sie lediglich ein Absturzprotokoll (Absturzprotokoll/Stacktrace – eine technische Aufschlüsselung darüber, wohin die Anwendung beim Absturz gegangen ist). KI ist äußerst leistungsfähig, wenn es darum geht, diese kryptischen Aufzeichnungen zu lesen, mögliche Ursachen aufzulisten und Lösungen vorzuschlagen. In dieser Einheit lernen wir, wie man KI als „Fehlerdetektiv“ einsetzt, überlassen Ihnen aber die Verantwortung, die endgültige Diagnose und Behebung zu überprüfen.

Das Absturzprotokoll lesen: Wo KI am hellsten strahlt

Ein Absturzprotokoll ist ein langer und einschüchternder Text; Unerfahrene Entwickler wissen nicht, wo sie suchen sollen. AI analysiert diesen Text in Sekundenschnelle: In welcher Zeile ist der Absturz aufgetreten, welche Ausnahme wurde ausgelöst, was ist der mögliche Grund. Häufige mobile Fehler sind offensichtlich und werden von der KI schnell erkannt: NullPointerException (Versuch, auf einen Nullwert zuzugreifen), IndexOutOfBoundsException (Zugriff auf ein nicht vorhandenes Listenelement) auf Android, EXC_BAD_ACCESS (Zugriff auf freigegebenen Speicher) auf iOS, unerwartet gefundene Null (Erzwingung einer Null optional).

Die häufigsten Arten von Mobilfunkabstürzen und ihre typischen Ursachen sind folgende:

Fehler (Ausnahme)

Plattform

typische Ursache

NullPointerException

Android

Zugriff auf einen Nullwert

IndexOutOfBoundsException

Android

Zugriff auf nicht vorhandenes Listenelement

unerwartet nichts gefunden

iOS

Auspacken einer Null erzwingen optional (!)

EXC_BAD_ACCESS

iOS

Zugriff auf freigegebenen Speicher

ANR/Einfrieren

Android

Lange/intensive Verarbeitung im Hauptthread

Schritt-für-Schritt-Debugging-Ablauf:

  1. Sammeln Sie die Aufzeichnung. Stellen Sie nach Möglichkeit das Absturzprotokoll, die Fehlermeldung und Schritte zu deren Reproduktion zusammen.
  2. Geben Sie den KI-Kontext an. Erzählen Sie mir nicht nur den Fehler, sondern auch den relevanten Teil des Codes und was er zum Absturz brachte.
  3. Fragen Sie nach möglichen Ursachen. „Sagen Sie mir die drei wahrscheinlichsten Ursachen und wie Sie sie jeweils überprüfen können.“
  4. Verifizieren. Bestätigen Sie den vorgeschlagenen Grund im Code und beim Testen. Beheben Sie das Problem nicht durch Raten.
  5. Beheben Sie das Problem und testen Sie es erneut. Überprüfen Sie, ob der Fehler tatsächlich behoben ist und keine neuen Fehler generiert werden.
Tipp: Wenn Sie das Absturzprotokoll an die KI übergeben, fügen Sie auch das entsprechende Code-Snippet bei. Nur mit Stacktrace kann die KI allgemeine Vorhersagen treffen; Wenn Sie den Code sehen, erhöht sich die Wahrscheinlichkeit, die genaue Zeile und die wahre Ursache zu finden, erheblich. Der Kontext bestimmt die Qualität der Diagnose.

Persönliche Datenfalle

Absturzprotokolle und Protokolle enthalten häufig Benutzerdaten: E-Mail, Benutzer-ID, Standort und sogar Formularinhalte. Das Einfügen dieses Datensatzes in die KI führt zur Weitergabe personenbezogener Daten an Dritte und stellt einen Verstoß gegen KVKK/DSGVO dar. Löschen (maskieren) Sie persönliche Bereiche, bevor Sie die Aufzeichnung senden. Achten Sie außerdem darauf, keine personenbezogenen Daten von Anfang an in die Protokolle Ihrer Anwendung zu schreiben. Ein gutes Protokoll beschreibt das Problem, verrät jedoch nicht die Identität.

Achtung: Der von der KI vorgeschlagene Fix kann „den Fehler zum Schweigen bringen“, aber möglicherweise nicht die Grundursache beheben. Wenn Sie beispielsweise eine NullPointerException mit einer Nullprüfung umschließen, wird der Absturz gestoppt. Wenn Sie jedoch nicht herausfinden, warum der Wert Null ist, bleibt der eigentliche Logikfehler bestehen. Behandeln Sie die Krankheit, nicht das Symptom.

Ursachenanalyse

Das Ziel des professionellen Debuggens besteht nicht darin, den Fehler zu unterdrücken, sondern die Ursache zu finden. Ich fragte die KI: „Warum könnte das null sein, wo könnte es im Datenfluss verloren gegangen sein?“ fragen: „Wie bringe ich das zum Schweigen?“ Es ist viel wertvoller als zu fragen. Sobald die Grundursache gefunden ist, werden Dutzende Variationen desselben Fehlers auf einmal behoben. KI beherrscht dieses Kettendenken gut: Verfolgen Sie die Daten von der Eingabe bis zur Ausgabe und bitten Sie sie, darüber nachzudenken, wo sie zusammenbrechen.

drei Mini-Koffer

Fall 1 – 2 Stunden Arbeit in 10 Minuten. Ein Entwickler hat zwei Stunden damit verbracht, nach einem Fehler zu suchen, der nur bei einem bestimmten Samsung-Modell abstürzte. Habe das Absturzprotokoll (persönliche Bereiche löschen) an die KI übergeben; YZ sagte, dass der Fehler auf einen Speicherüberlauf hindeutet, der bei einer anderen Kameraauflösung dieses Geräts auftritt. Mit dem Hinweis wurde der Grund innerhalb von 10 Minuten gefunden. KI beschleunigte die Suche, Menschen verifizierten die Lösung.

Fall 2 – Der zum Schweigen gebrachte Käfer ist zurück. Ein Team verhinderte einen wiederkehrenden Absturz, indem es einen KI-Vorschlag nutzte, um ihn abzufangen. Der Absturz hörte auf, aber die Benutzer begannen sich darüber zu beschweren, dass „Daten nicht gespeichert werden“; denn das eigentliche Problem (Datenbankverbindung) war immer noch da, es war einfach unsichtbar geworden. Nachdem die Grundursache gefunden wurde, konnten sowohl der Absturz als auch der Datenverlust behoben werden. Lektion: Schweigen ist keine Lösung.

Fall 3 – Datenleck im Protokoll. Bei einer Prüfung wurde festgestellt, dass die vollständigen Namen und Telefonnummern der Benutzer in die Absturzprotokolle der App geschrieben wurden. Entwickler haben diese Protokolle routinemäßig in die KI eingefügt und Fehler behoben; Persönliche Daten gehen also schon seit Monaten raus. Protokolle wurden maskiert und der Prozess wurde korrigiert. Lektion: Vertraulichkeit gilt auch beim Debuggen.

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schlechte Eingabeaufforderung: „Warum tritt dieser Fehler auf? [Stack Trace]“

Starke Aufforderung: „Dieser Absturz passiert in meiner Android-App. Kontext: – Während des Vorgangs: Benutzer fügt über Produktdetails zum Warenkorb hinzu – Nur auf einigen Geräten, Modelle mit wenig RAM – Zugehöriger Code: [ViewModel- und Repository-Teil] – Absturzprotokoll (persönliche Daten gelöscht): [Stack Trace] Listen Sie die 3 wahrscheinlichsten Grundursachen auf. Für jede: 1) Wie überprüfe ich, 2) Permanente Fehlerbehebung (keine Stummschaltung). Geben Sie Ihre Annahme an, wenn Sie sich nicht sicher sind.“

Kopierbare Vorlagen

Vorlage für die Absturzanalyse: „Analysieren Sie den folgenden Absturz. Kontext: [Was Sie tun, welches Gerät/welche Version]. Relevanter Code: [Code]. Absturzprotokoll (persönliche Daten gelöscht): [Trace]. Geben Sie die 3 wahrscheinlichsten Grundursachen und eine Überprüfung + dauerhafte Behebung für jede an. Markieren Sie außerdem Problemumgehungen, die das Symptom zum Schweigen bringen.“

Vorlage für Grundursache: „Dieser Wert kommt unerwartet [null/false]. Verfolgen Sie den Datenfluss von der Eingabe bis zu diesem Punkt: Wo könnte er verloren gehen oder beschädigt werden? Sagen Sie mir, wo ich in jeder Phase nachsehen soll. [Code]“

Vorlage zum Lesen von Protokollen: „Interpretieren Sie diese Protokollausgabe: Welche Ereignisse sind der Reihe nach aufgetreten, wo liegt die Anomalie, was war der letzte fehlerfreie Schritt vor dem Fehler? [Protokoll – persönliche Daten gelöscht]“

Reproduktionsvorlage: „Welche Schritte, Gerätezustände und Daten sollte ich versuchen, um diesen Fehler zuverlässig zu reproduzieren? Listen Sie die Bedingungen auf, die den Fehler auslösen könnten, in der Reihenfolge ihrer Wahrscheinlichkeit. [Beschreibung]“

Häufige Fehler

  • Bereitstellung einer kontextfreien Stapelverfolgung. Ohne relevanten Code und Szenario erstellt die KI allgemeine Vorhersagen.
  • Persönliche Daten werden zusammen mit Protokollen in die KI eingefügt. Verletzung der Vertraulichkeit; Maske zuerst.
  • Bringen Sie das Symptom zum Schweigen. Durch das Verstecken des Absturzes mit Try-Catch bleibt das Grundproblem bestehen und es entstehen neue Probleme.
  • Den ersten Vorschlag anwenden, ohne ihn zu überprüfen. Die Diagnose KI ist eine Hypothese; Im Code bestätigen.
  • Ich versuche es im Emulator zu reproduzieren. Einige Fehler treten nur im tatsächlichen Gerät/Zustand auf.
  • Kein erneuter Test nach der Korrektur. Der Fix könnte etwas anderes kaputt gemacht haben; Überprüfen Sie die Regression.

Zusammenfassend

Einer der Bereiche, in denen KI sich auszeichnet, ist das Lesen von Absturzprotokollen und das Aussortieren möglicher Ursachen. Die Qualität der Diagnose wird erheblich verbessert, wenn der Kontext angegeben wird. Aber die endgültige Diagnose und Korrektur obliegt dem Menschen: Der Vorschlag der KI ist eine Hypothese, die durch Code und Tests verifiziert wird. Das Ziel besteht nicht darin, das Symptom zum Schweigen zu bringen, sondern die Grundursache zu beseitigen. Der unterdrückte Fehler kehrt normalerweise in einer anderen Form zurück. Absturzprotokolle können personenbezogene Daten enthalten. Maskieren Sie es, bevor Sie es an AI weitergeben, und schreiben Sie von Anfang an keine personenbezogenen Daten in Ihre Protokolle.

Anwendungsaufgabe

Nehmen Sie ein Absturzprotokoll, das Sie haben (oder die Probe, die Sie von der KI generieren), maskieren Sie alle darin enthaltenen persönlichen/spezifischen Daten und geben Sie sie mit der „Absturzanalysevorlage“ an die KI weiter. Unterscheiden Sie, welche der Hauptursachen in den AI-Listen tatsächliche Korrekturen sind und welche lediglich zum Schweigen bringen. Wenden Sie den von Ihnen gewählten permanenten Fix an und stellen Sie sicher, dass der Fehler behoben ist und keine neuen Probleme auftreten.

Checkliste

  • [ ] Ich habe das Absturzprotokoll mit relevantem Code und Szenariokontext bereitgestellt
  • [ ] Ich habe persönliche/individuelle Daten in den Protokollen maskiert
  • [ ] Ich habe AI nach der Grundursache und einer dauerhaften Lösung gefragt, nicht nach der Stummschaltung
  • [ ] Ich habe die Diagnose im Code und beim Testen überprüft, ich habe sie nicht blind angewendet
  • [ ] Nach dem Fix habe ich getestet, dass der Fehler verschwunden war und es keine Regression gab
  • [ ] Ich habe überprüft, dass meine Anwendung keine personenbezogenen Daten in ihre Protokolle schreibt