Επαναμεταγλωττίστε το πρόγραμμα που δίνει το σφάλμα κατάτμησης έτσι ώστε όλα τα σύμβολα εντοπισμού σφαλμάτων συνδέονται σε αυτό . Για παράδειγμα , για ένα C + + πρόγραμμα για οποιοδήποτε λειτουργικό σύστημα με την GNU σουίτα εργαλείων , εκτελέστε:
" g+ + - g -o program.c πρόγραμμα«
όπου η επιλογή " - g " εντολή στον μεταγλωττιστή να περιλαμβάνει σύμβολα εντοπισμού σφαλμάτων . 2
Εκτελέστε το πρόγραμμα έως ότου σταματήσει λόγω βλάβης του κατακερματισμού . Για παράδειγμα , εκτελέστε:
" πρόγραμμα "
εικόνων 3
Επικαλεστείτε το πρόγραμμα εντοπισμού σφαλμάτων για το πρόγραμμα αμέσως μετά το σφάλμα κατάτμησης . Για παράδειγμα , εκτελέστε:
" πρόγραμμα gdb "
Η 4
Εμφάνιση ενός backtrace χρησιμοποιώντας το πρόγραμμα εντοπισμού σφαλμάτων . Όλα τα προγράμματα εντοπισμού σφαλμάτων πηγή επίπεδο έχουν τη δυνατότητα να εμφανίζει την αλυσίδα των ένθετων επικλήσεις λειτουργία κατά τη στιγμή της συντριβής του προγράμματος . Για μας " gdb " παράδειγμα , να εισέλθουν στο εσωτερικό " gdb : "
" backtrace "
5
Εξετάστε το backtrace για σημάδια άπειρη αναδρομή . Είναι ένα ενιαίο όνομα της συνάρτησης επαναλαμβάνεται περισσότερες φορές από ό, τι είναι αναγκαίο, πριν από τη συντριβή; Υπάρχουν μερικές λειτουργίες καλώντας ο ένας τον άλλο ( για παράδειγμα , η αμοιβαία αναδρομή) πάρα πολλές φορές πριν από τη συντριβή ; Εάν η απάντηση σε κάθε ερώτηση είναι «ναι », το πρόγραμμα σταμάτησε λόγω της υπερχείλισης στοίβας . Η πιο πιθανή αιτία της υπερχείλισης στοίβας σε γλώσσες υψηλού επιπέδου είναι σωστά κωδικοποιημένα περιπτώσεις βάσης .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα