Μονάδα 7 / 11

Εντοπισμός σφαλμάτων και ανάλυση σφαλμάτων με τεχνητή νοημοσύνη

Κέρδη:

  • Δυνατότητα να περιορίσετε γρήγορα πιθανές βασικές αιτίες δίνοντας εγγραφές σφαλμάτων (ίχνη στοίβας) στην τεχνητή νοημοσύνη με το σχετικό πλαίσιο κώδικα και σεναρίου
  • Δυνατότητα μόνιμης επίλυσης της βασικής αιτίας αντί για επικύρωση της διάγνωσης του AI ως υπόθεση στον κώδικα και τον έλεγχο και τη σίγαση του συμπτώματος
  • Προστασία του απορρήτου κατά τον εντοπισμό σφαλμάτων με απόκρυψη προσωπικών δεδομένων σε αρχεία σφαλμάτων και αρχεία καταγραφής

Κάθε εφαρμογή δίνει λάθη. Αυτό που διακρίνει έναν καλό προγραμματιστή είναι το πόσο γρήγορα βρίσκει και διορθώνει σφάλματα. Ο εντοπισμός σφαλμάτων μέσω κινητού — η εύρεση και η διόρθωση της πηγής ενός προβλήματος — είναι ιδιαίτερα δύσκολη επειδή το σφάλμα παρουσιάζεται στη συσκευή του χρήστη, σε ένα περιβάλλον που δεν μπορείτε να δείτε. Τις περισσότερες φορές, το μόνο που έχετε είναι ένα αρχείο καταγραφής σφαλμάτων (καταγραφή σφαλμάτων / ίχνος στοίβας — μια τεχνική ανάλυση για το πού πήγε η εφαρμογή όταν έπεσε). Η τεχνητή νοημοσύνη είναι εξαιρετικά ισχυρή στο να διαβάζει αυτά τα κρυπτικά αρχεία, να απαριθμεί πιθανές αιτίες και να προτείνει λύσεις. Σε αυτή την ενότητα θα μάθουμε πώς να χρησιμοποιούμε την τεχνητή νοημοσύνη ως «ντετέκτιβ σφαλμάτων», αλλά σας αφήνουμε με την ευθύνη της επαλήθευσης της τελικής διάγνωσης και της διόρθωσης.

Διαβάζοντας το αρχείο καταγραφής συντριβών: Εκεί που η τεχνητή νοημοσύνη λάμπει περισσότερο

Ένα αρχείο καταγραφής σφαλμάτων είναι ένα μακρύ και εκφοβιστικό κείμενο. Ο άπειρος προγραμματιστής δεν ξέρει πού να ψάξει. Το AI αναλύει αυτό το κείμενο σε δευτερόλεπτα: σε ποια γραμμή συνετρίβη, ποια εξαίρεση έγινε, ποιος είναι ο πιθανός λόγος. Τα κοινά σφάλματα για κινητά είναι προφανή και το AI τα αναγνωρίζει γρήγορα: NullPointerException (προσπάθεια πρόσβασης σε μηδενική τιμή), IndexOutOfBoundsException (πρόσβαση σε ανύπαρκτο στοιχείο λίστας) στο Android, EXC_BAD_ACCESS (πρόσβαση σε ελευθερωμένη μνήμη) στο iOS, απροσδόκητα βρέθηκε μια επιλογή.

Οι πιο συνηθισμένοι τύποι σφαλμάτων κινητής τηλεφωνίας και οι τυπικές αιτίες τους είναι οι εξής:

Σφάλμα (εξαίρεση)

Πλατφόρμα

τυπική αιτία

NullPointerException

Android

Πρόσβαση σε μηδενική τιμή

IndexOutOfBoundsException

Android

Πρόσβαση σε ανύπαρκτο στοιχείο λίστας

απροσδόκητα βρέθηκε μηδέν

iOS

Αναγκαστικό ξετύλιγμα μηδέν προαιρετικό (!)

EXC_BAD_ACCESS

iOS

Πρόσβαση στην ελευθερωμένη μνήμη

ANR/πάγωμα

Android

Μακρά/βαριά επεξεργασία στο κύριο νήμα

Βήμα προς βήμα ροή εντοπισμού σφαλμάτων:

  1. Συλλέξτε το αρχείο. Συνδυάστε το αρχείο καταγραφής σφαλμάτων, το μήνυμα σφάλματος και τα βήματα για να το αναπαράγετε, εάν είναι δυνατόν.
  2. Δώστε το πλαίσιο AI. Πείτε μου όχι μόνο το σφάλμα, αλλά το σχετικό κομμάτι κώδικα και τι συνετρίβη.
  3. Ρωτήστε για πιθανές αιτίες. "Πες μου τις 3 πιο πιθανές αιτίες και πώς να επαληθεύσω την καθεμία."
  4. Επαληθεύω. Επιβεβαιώστε τον προτεινόμενο λόγο στον κώδικα και τη δοκιμή. Μην το διορθώσετε μαντεύοντας.
  5. Διορθώστε το και δοκιμάστε ξανά. Βεβαιωθείτε ότι το σφάλμα έχει πραγματικά εξαφανιστεί και ότι δεν δημιουργούνται νέα σφάλματα.
Συμβουλή: Όταν δίνετε το αρχείο καταγραφής σφαλμάτων στο AI, συμπεριλάβετε και το σχετικό απόσπασμα κώδικα. Μόνο με το stack trace το AI κάνει γενική πρόβλεψη. Όταν βλέπετε τον κωδικό, η πιθανότητα να βρείτε την ακριβή γραμμή και την πραγματική αιτία αυξάνεται πολύ. Το πλαίσιο καθορίζει την ποιότητα της διάγνωσης.

Παγίδα προσωπικών δεδομένων

Τα αρχεία καταγραφής σφαλμάτων και τα αρχεία καταγραφής συχνά περιέχουν δεδομένα χρήστη: email, αναγνωριστικό χρήστη, τοποθεσία, ακόμη και περιεχόμενο φόρμας. Η επικόλληση αυτής της εγγραφής στο AI ως έχει σημαίνει διαρροή προσωπικών δεδομένων σε τρίτους και αποτελεί παραβίαση του KVKK / GDPR. Καθαρίστε (μάσκα) προσωπικές περιοχές πριν υποβάλετε την ηχογράφηση. Επίσης, προσέξτε να μην γράψετε προσωπικά δεδομένα στα αρχεία καταγραφής της εφαρμογής σας από την αρχή. Ένα καλό αρχείο καταγραφής περιγράφει το πρόβλημα αλλά δεν αποκαλύπτει την ταυτότητα.

Προσοχή: Η διόρθωση που προτείνεται από την τεχνητή νοημοσύνη μπορεί να «απηλώσει το σφάλμα» αλλά μπορεί να μην λύσει τη βασική αιτία. Για παράδειγμα, η αναδίπλωση ενός NullPointerException με έναν μηδενικό έλεγχο θα σταματήσει τη συντριβή, αλλά αν δεν καταλάβετε γιατί η τιμή είναι μηδενική, το πραγματικό λογικό σφάλμα θα συνεχιστεί. Αντιμετωπίστε την ασθένεια, όχι το σύμπτωμα.

Ανάλυση ριζικής αιτίας

Ο στόχος του επαγγελματικού εντοπισμού σφαλμάτων δεν είναι να αποσιωπηθεί το σφάλμα αλλά να βρεθεί η βασική αιτία. Ρώτησα το AI "γιατί μπορεί αυτό να είναι μηδενικό, πού μπορεί να έχει χαθεί στη ροή δεδομένων;" ρωτώντας, "πώς μπορώ να το σιωπήσω αυτό;" Είναι πολύ πιο πολύτιμο από το να ζητάς. Μόλις εντοπιστεί η βασική αιτία, δεκάδες παραλλαγές του ίδιου σφάλματος επιλύονται ταυτόχρονα. Η τεχνητή νοημοσύνη είναι καλή σε αυτήν την αλυσιδωτή συλλογιστική: ακολουθήστε τα δεδομένα από την είσοδο στην έξοδο και ζητήστε της να σκεφτεί πού καταρρέουν.

τρεις μίνι θήκες

Περίπτωση 1 — 2 ώρες δουλειά σε 10 λεπτά. Ένας προγραμματιστής ξόδεψε 2 ώρες ψάχνοντας για ένα σφάλμα που χάλασε μόνο σε ένα συγκεκριμένο μοντέλο της Samsung. Έδωσε το αρχείο καταγραφής συντριβών (εκκαθάριση προσωπικών περιοχών) στο AI. Ο YZ είπε ότι το σφάλμα υποδεικνύει υπερχείλιση μνήμης που συμβαίνει με διαφορετική ανάλυση κάμερας αυτής της συσκευής. Με το στοιχείο, ο λόγος βρέθηκε σε 10 λεπτά. Το AI επιτάχυνε την αναζήτηση, ο άνθρωπος επαλήθευσε τη λύση.

Περίπτωση 2 — Το σίγαση σφάλμα επιστρέφει. Μια ομάδα σίγησε ένα επαναλαμβανόμενο ατύχημα χρησιμοποιώντας μια πρόταση τεχνητής νοημοσύνης για να προσπαθήσει να το πιάσει. Η συντριβή σταμάτησε, αλλά οι χρήστες άρχισαν να παραπονιούνται ότι "τα δεδομένα δεν αποθηκεύονται". επειδή το πραγματικό πρόβλημα (σύνδεση βάσης δεδομένων) ήταν ακόμα εκεί, μόλις είχε γίνει αόρατο. Μόλις βρέθηκε η βασική αιτία, επιλύθηκαν τόσο το σφάλμα όσο και η απώλεια δεδομένων. Μάθημα: η φίμωση δεν λύνει.

Περίπτωση 3 — Δεδομένα που διέρρευσαν στο αρχείο καταγραφής. Ένας έλεγχος διαπίστωσε ότι τα πλήρη ονόματα και οι αριθμοί τηλεφώνου των χρηστών ήταν γραμμένα στα αρχεία καταγραφής σφαλμάτων της εφαρμογής. Οι προγραμματιστές επικολλούσαν τακτικά αυτά τα αρχεία καταγραφής στο AI και διόρθωσαν σφάλματα. Έτσι, τα προσωπικά δεδομένα έχουν σβήσει εδώ και μήνες. Τα αρχεία καταγραφής καλύφθηκαν και η διαδικασία διορθώθηκε. Μάθημα: η εμπιστευτικότητα ισχύει ακόμη και κατά τον εντοπισμό σφαλμάτων.

Αδύναμη προτροπή / Ισχυρή προτροπή

Κακή προτροπή: "Γιατί παρουσιάζεται αυτό το σφάλμα; [stack trace]"

Ισχυρή προτροπή: "Αυτό το σφάλμα συμβαίνει στην εφαρμογή μου Android. Πλαίσιο:- Ενώ το κάνω: χρήστης προσθέτει στο καλάθι από λεπτομέρειες προϊόντος- Μόνο σε ορισμένες συσκευές, μοντέλα χαμηλής μνήμης RAM- Σχετικός κώδικας: [Προβολή μοντέλου και τμήμα αποθετηρίου]- Αρχείο καταγραφής σφαλμάτων (διαγράφηκαν προσωπικά δεδομένα): [stack trace]Πώς θα καθορίσετε τις 3 πιο πιθανές αιτίες για κάθε verman: 1. (όχι φίμωση).

Αντιγράψιμα πρότυπα

Πρότυπο ανάλυσης σφαλμάτων:"Ανάλυση του ακόλουθου σφάλματος. Περιεχόμενο: [τι κάνετε, ποια συσκευή/έκδοση]. Σχετικός κωδικός: [κωδικός]. Αρχείο καταγραφής σφαλμάτων (διαγράφηκαν προσωπικά δεδομένα): [ίχνος]. Δώστε 3 πιο πιθανές βασικές αιτίες και επαλήθευση + μόνιμη διόρθωση για καθεμία. Επισημάνετε επίσης λύσεις που σβήνουν το σύμπτωμα."

Πρότυπο ρίζας αιτίας: "Αυτή η τιμή εμφανίζεται [null/false] απροσδόκητα. Ακολουθήστε τη ροή δεδομένων από την είσοδο μέχρι αυτό το σημείο: πού μπορεί να χαθεί ή να καταστραφεί; Πείτε μου πού πρέπει να ελέγξω σε κάθε στάδιο. [κωδικός]"

Πρότυπο ανάγνωσης αρχείων καταγραφής: "Ερμηνεύστε αυτό το αποτέλεσμα καταγραφής: ποια συμβάντα συνέβησαν με τη σειρά, πού είναι η ανωμαλία, ποιο ήταν το τελευταίο υγιές βήμα πριν από το σφάλμα; [καταγραφή — διαγράφηκαν προσωπικά δεδομένα]"

Πρότυπο αναπαραγωγής: "Ποια βήματα, καταστάσεις συσκευής και δεδομένα πρέπει να προσπαθήσω να αναπαράγω αξιόπιστα αυτό το σφάλμα; Καταγράψτε τις συνθήκες που θα μπορούσαν να προκαλέσουν το σφάλμα κατά σειρά πιθανότητας. [περιγραφή]"

Συνήθη λάθη

  • Δίνοντας ίχνος στοίβας χωρίς περιβάλλον. Χωρίς σχετικό κώδικα και σενάριο, το AI κάνει γενικές προβλέψεις.
  • Επικόλληση προσωπικών δεδομένων στο AI μαζί με αρχεία καταγραφής. Παραβίαση του απορρήτου; μάσκα πρώτα.
  • Σιωπήστε το σύμπτωμα. Η απόκρυψη της συντριβής με το try-catch αφήνει το βασικό πρόβλημα και δημιουργεί νέα προβλήματα.
  • Εφαρμογή της πρώτης πρότασης χωρίς να την επαληθεύσετε. Η διάγνωση της ΑΙ είναι μια υπόθεση. Επιβεβαίωση στον κωδικό.
  • Προσπαθώ να το αναπαράγω στον εξομοιωτή. Ορισμένα σφάλματα εμφανίζονται μόνο στην πραγματική συσκευή/κατάσταση.
  • Χωρίς επανέλεγχο μετά από διόρθωση. Η επιδιόρθωση μπορεί να έχει σπάσει κάτι άλλο. Ελέγξτε την παλινδρόμηση.

Συνοπτικά

Ένας από τους τομείς όπου η τεχνητή νοημοσύνη υπερέχει είναι η ανάγνωση αρχείων καταγραφής σφαλμάτων και η ταξινόμηση πιθανών αιτιών. Η ποιότητα της διάγνωσης βελτιώνεται σημαντικά όταν δίνεται το πλαίσιο. Αλλά η τελική διάγνωση και διόρθωση ανήκει στον άνθρωπο: η πρόταση του AI είναι μια υπόθεση, επαληθευμένη σε κώδικα και δοκιμή. Ο στόχος δεν είναι να αποσιωπηθεί το σύμπτωμα αλλά να λυθεί η βασική αιτία. Το σφάλμα σίγασης συνήθως επιστρέφει σε άλλη μορφή. Τα αρχεία καταγραφής σφαλμάτων ενδέχεται να περιέχουν προσωπικά δεδομένα. Καλύψτε το πριν το δώσετε σε AI και μην γράφετε προσωπικά δεδομένα στα αρχεία καταγραφής σας από την αρχή.

Εργασία εφαρμογής

Πάρτε ένα αρχείο καταγραφής σφαλμάτων που έχετε (ή το δείγμα που δημιουργείτε από το AI), καλύψτε τυχόν προσωπικά/διακριτικά δεδομένα σε αυτό και δώστε το στο AI με το "Πρότυπο ανάλυσης σφαλμάτων". Διακρίνετε ποιες από τις βασικές αιτίες που οι λίστες τεχνητής νοημοσύνης είναι πραγματικές διορθώσεις και ποιες απλώς αποσιωπούν. Εφαρμόστε τη μόνιμη διόρθωση που επιλέξατε και βεβαιωθείτε ότι το σφάλμα έχει φύγει και δεν προκύπτουν νέα προβλήματα.

λίστα ελέγχου

  • [ ] Έχω δώσει το αρχείο καταγραφής σφαλμάτων με σχετικό κώδικα και περιβάλλον σεναρίου
  • [ ] Κάλυψα προσωπικά/διακριτικά δεδομένα στα αρχεία καταγραφής
  • [ ] Ζήτησα από την τεχνητή νοημοσύνη για τη βασική αιτία και τη μόνιμη διόρθωση, όχι τη σίγαση
  • [ ] Επιβεβαίωσα τη διάγνωση σε κώδικα και δοκιμές, δεν την εφάρμοσα στα τυφλά
  • [ ] Μετά την επιδιόρθωση, δοκίμασα ότι το σφάλμα είχε φύγει και δεν υπήρχε παλινδρόμηση
  • [ ] Έλεγξα ότι η εφαρμογή μου δεν εγγράφει προσωπικά δεδομένα στα αρχεία καταγραφής της