Συνήθως, οι εφαρμογές που κολλάνε σε Mac είναι πολύ σπάνιο. Αλλά όταν συμβεί αυτό, μπορεί να θέλετε να παρακολουθείτε αυτά τα προβλήματα. Και αν είστε προγραμματιστής, πρέπει να καταλάβετε γιατί η εφαρμογή σας κολλάει. Δείτε πώς μπορείτε να διαβάσετε και να ταξινομήσετε τις αναφορές σφαλμάτων του macOS ανά κωδικοποιημένη γλώσσα.

Γρήγοροι σύνδεσμοι
Άνοιγμα αναφορών σφαλμάτων

Όταν μια εφαρμογή κολλάει στο Mac σας, δημιουργεί αυτόματα μια αναφορά σφαλμάτων. Θα δείτε αυτό να εμφανίζεται μετά τη συντριβή με ένα προειδοποιητικό παράθυρο διαλόγου που λέει "[Η εφαρμογή] σταμάτησε απροσδόκητα". Αυτή η αναφορά σφαλμάτων είναι διαθέσιμη για άμεση ανάγνωση σε αυτό το παράθυρο κάνοντας κλικ στο κουμπί «Αναφορά…». Η αναφορά σφαλμάτων μπορεί επίσης να βρεθεί στην εφαρμογή Console.
1. Ανοίξτε την εφαρμογή Console πληκτρολογώντας "Console" στο Spotlight ή μεταβείτε στο "Application -> Utilities -> Console.app".

2. Κάντε κλικ στις "Αναφορές χρήστη" στο αριστερό μενού και, στη συνέχεια, κάντε κλικ στην αναφορά σφαλμάτων που θέλετε να προβάλετε. Όλα αυτά τα αρχεία τελειώνουν με ".crash" και περιλαμβάνουν την ημερομηνία και την κατεστραμμένη εφαρμογή στον τίτλο. Λεπτομέρειες για την αναφορά σφαλμάτων είναι διαθέσιμες στο παράθυρο στα δεξιά.

Διαβάστε αναφορές σφαλμάτων Mac OS
Ας δούμε την αναφορά σφαλμάτων από πάνω προς τα κάτω.
Τι είναι αυτό που κολλάει;

Το πρώτο μέρος της αναφοράς σφαλμάτων θα σας δείξει εάν μια διεργασία ή μια εφαρμογή την "κολλάει". Το πιο σημαντικό μέρος για ένα εργαλείο αντιμετώπισης προβλημάτων είναι το όνομα της διαδικασίας.
Διεργασία: aText [11473] Διαδρομή: /Applications/aText.app/Contents/MacOS/aText Αναγνωριστικό: com.trankynam.aText Έκδοση: 2.19 (62) Τύπος κωδικού: X86-64 (Εγγενής) Γονική διεργασία: ??? [1] Υπεύθυνος: aText [11473] Αναγνωριστικό χρήστη: 501
Πότε έγιναν οι διακοπές;

Το δεύτερο μέρος μας λέει πότε παρουσιάστηκε το σφάλμα. Παρέχει επίσης λίγες πληροφορίες για το σύστημά σας.
Ημερομηνία/Ώρα: 2018-03-15 00:58:10.552 -0400 Έκδοση λειτουργικού συστήματος: Mac OS 630000 δευτερόλεπτα Προστασία ακεραιότητας συστήματος: ενεργοποιημένη
Τι προκάλεσε τη δυσλειτουργία;

Το επόμενο μέρος είναι το πιο διαφωτιστικό. Ο «Τύπος εξαίρεσης» που προσφέρεται από την εφαρμογή μας λέει τι προκάλεσε τη δυσλειτουργία. Το αρχείο καταγραφής αναφέρει επίσης ποιο νήμα έχει διακοπεί: σε αυτήν την περίπτωση, το νήμα 0.
Σφάλμα νήματος: 0 Ουρά αποστολής: com.apple.main-thread Τύπος εξαίρεσης: EXC_BAD_ACCESS (SIGSEGV) Κωδικοί εξαίρεσης: KERN_INVALID_ADDRESS στο 0x000040dedeadbec0 Σημείωση εξαίρεσης: EXC_CORPSE_NOTIFY Σήμα τερματισμού: Σφάλμα τμηματοποίησης: 11 Αιτία τερματισμού: Χώρος ονομάτων SIGNAL, Κωδικός 0xb Τερματισμός διεργασίας: χειριστής exc [0]
Λίστες Apple Μερικοί συνήθεις τύποι εξαιρέσεων Στην τεχνική του τεκμηρίωση:
Κακή πρόσβαση στη μνήμη (EXC_BAD_ACCESS / SIGSEGV / SIGBUS) – Το πρόγραμμα προσπαθεί να αποκτήσει εσφαλμένη πρόσβαση στη μνήμη ή με μη έγκυρη διεύθυνση. Με έναν κωδικό που εξηγεί το πρόβλημα της μνήμης.
Μη κανονική έξοδος (EXC_CRASH / SIGABRT) - Μη φυσιολογική έξοδος, συνήθως σε περίπτωση εξαίρεσης χωρίς αναστολή της C++ και κλήσης για ακύρωση ()
Trap Trap (EXC_BREAKPOINT / SIGTRAP) - Ίδιο με το SIGABRT, αλλά αυτός ο τερματισμός δίνει στο συνδεδεμένο πρόγραμμα εντοπισμού σφαλμάτων την ευκαιρία να διακόψει τη διαδικασία σε ένα σημείο διακοπής και να εντοπίσει το σφάλμα.
Παράνομες οδηγίες (EXC_BAD_INSTRUCTION / SIGILL) – Η επεξεργασία εξέδωσε μια επεξεργασία που δεν έγινε κατανοητή ή δεν ήταν δυνατή η επεξεργασία.
Έξοδος (SIGQUIT) – Η διαδικασία τερματίστηκε από άλλη διαδικασία με επαρκή προνόμια. Συνήθως, η διαδικασία παρακολούθησης τερματίζει τη διαδικασία κακής πρακτικής.
Τερματισμός (SIGKILL) - Η διαδικασία τερματίστηκε κατόπιν αιτήματος του συστήματος. Ένας κωδικός εξόδου θα προσαρτηθεί για να εξηγήσει την εξαίρεση.
Όπως μπορούμε να δούμε από την αναφορά σφαλμάτων, η εφαρμογή προσπάθησε να αποκτήσει πρόσβαση στη μνήμη εκτός καραντίνας. Αυτό οφείλεται σε σφάλμα προγραμματισμού στην εφαρμογή ή σε μια ασυνήθιστη κατάσταση χρήστη που προκαλεί την εσφαλμένη αντιστοίχιση της μνήμης της εφαρμογής.
Τι οδηγεί σε δυσλειτουργίες;

Στη συνέχεια, βλέπουμε μια αντίστροφη χρονολογική λίστα με το τι προκαλεί τη συντριβή. Αυτά ταξινομούνται κατά νήμα, ξεκινώντας από το νήμα 0.
Υπάρχουν τέσσερις στήλες σε αυτήν την αναφορά. Το πρώτο αναφέρει τον αριθμό συμβάντος με αντίστροφη χρονολογική σειρά, ξεκινώντας από το 0. Το δεύτερο είναι το αναγνωριστικό διεργασίας. Το τρίτο είναι η διεύθυνση της διεργασίας στη μνήμη. Το τέταρτο είναι το όνομα της εργασίας του προγράμματος.
Αυτή η "αναίρεση" μπορεί να είναι κάπως μπερδεμένη. Είναι "συμβολικά", που σημαίνει ότι ορισμένες διευθύνσεις μνήμης έχουν αντικατασταθεί από τα ονόματα των συναρτήσεων ή των εργασιών εφαρμογής. Μερικές φορές αυτό δεν μπορεί να γίνει πλήρως, αφήνοντας τις μη αναγνώσιμες διευθύνσεις μνήμης γεμάτες με την αναφορά.
Αυτό το βλέπουμε στην παραπάνω αναφορά σφαλμάτων: το com.trankynam.aText δεν είναι διακριτικό. Ακόμη και με πλήρη κωδικοποίηση, το φόντο μπορεί να είναι δύσκολο να διαβαστεί. Οι προγραμματιστές λογισμικού μερικές φορές περιλαμβάνουν χρήσιμες σημειώσεις σχετικά με εργασίες και συμβάντα εφαρμογής. Άλλες φορές, είναι κρυπτογραφημένες διευθύνσεις ή αριθμητικός κωδικός. Εάν μπορείτε να καταλάβετε τον συμβολισμό, ίσως μπορείτε να καταλάβετε τι συμβαίνει. Αλλά όσο το δυνατόν περισσότερο, θα πρέπει να κωδικοποιήσετε την εφαρμογή μόνοι σας για να κατανοήσετε το backtrace.
Συμπέρασμα: Είναι αυτό χρήσιμο;
Εάν είστε προγραμματιστής λογισμικού, είναι απαραίτητο να διαβάσετε τις αναφορές σφαλμάτων. Αυτό σας βοηθά να κατανοήσετε ποιο μέρος της εφαρμογής σας προκαλεί προβλήματα και γιατί. Εάν είστε χρήστης, δεν είναι χρήσιμοι. Ωστόσο, εάν έχετε ένα συνεχές σφάλμα, οι αναφορές σφαλμάτων μπορούν να σας βοηθήσουν να αντιμετωπίσετε το πρόβλημα ή να συνεργαστείτε με τον προγραμματιστή για να διορθώσετε το πρόβλημα. Ενδέχεται να λάβετε τον κωδικό σφάλματος που επιλύεται βοηθητικά μέσω της Google ή μπορείτε να τον υποβάλετε στην τεχνική υποστήριξη με τις σωστές πληροφορίες. Αν θέλετε δραστικές λεπτομέρειες, μπορείτε να διαβάσετε τα πάντα στο Τεχνική σημείωση της Apple σχετικά με τα σφάλματα.










