Αποσφαλμάτωση: Διαφορά μεταξύ των αναθεωρήσεων

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μΧωρίς σύνοψη επεξεργασίας
Χωρίς σύνοψη επεξεργασίας
Γραμμή 2: Γραμμή 2:
Για να δουλέψει ένας εκσφαλματωτής πρέπει το προς εκσφαλμάτωση πρόγραμμα να περιέχει δεδομένα του πηγαίου κώδικα που τρέχει.
Για να δουλέψει ένας εκσφαλματωτής πρέπει το προς εκσφαλμάτωση πρόγραμμα να περιέχει δεδομένα του πηγαίου κώδικα που τρέχει.


Σε Λειτουργικό σύστημα Linux αυτό γίνεται με την προσθήκη της παραμέτρου -g στην γραμμή εντολών που προκαλεί την μετάφραση του προγράμματος γραμμένου σε Ansi C. Ο εκσφαλματωτής καλείταi εκτελώντας την εντολή sdb ή adb ή gdb ή dbx.
Σε Λειτουργικό σύστημα Linux αυτό γίνεται με την προσθήκη της παραμέτρου -g στην γραμμή εντολών που προκαλεί την μετάφραση του προγράμματος γραμμένου σε Ansi C. Ο αποσφαλματωτής καλείταi εκτελώντας την εντολή sdb ή adb ή [[αποσφαλματωτής GNU|gdb]] ή dbx.


== Διαδικασία αποσφαλμάτωσης ==
== Διαδικασία αποσφαλμάτωσης ==
Γραμμή 40: Γραμμή 40:


Απλοϊκό παράδειγμα μπορεί να είναι η εμφάνιση της πλήρους αλλαγής που καλείται ο χρήστης να αποφασίσει αν θα την κάνει. Αν π.χ. ένα πρόγραμμα σε κανονικές συνθήκες απλά εμφανίζει στον χρήστη αν θέλει να συνεχίσει με την καταχώρηση, για λόγους αποσφαλμάτωσης, μπορεί να του παρουσιάζει και όλα τα προς καταχώρηση στοιχεία, με την ηλεκτρονική μορφή που θα καταχωρηθούν, επιπλέον από τη μορφή που τα "πέρασε" ο χρήστης.
Απλοϊκό παράδειγμα μπορεί να είναι η εμφάνιση της πλήρους αλλαγής που καλείται ο χρήστης να αποφασίσει αν θα την κάνει. Αν π.χ. ένα πρόγραμμα σε κανονικές συνθήκες απλά εμφανίζει στον χρήστη αν θέλει να συνεχίσει με την καταχώρηση, για λόγους αποσφαλμάτωσης, μπορεί να του παρουσιάζει και όλα τα προς καταχώρηση στοιχεία, με την ηλεκτρονική μορφή που θα καταχωρηθούν, επιπλέον από τη μορφή που τα "πέρασε" ο χρήστης.

== Δείτε επίσης ==
* [[Αποσφαλματωτής GNU]]


{{Πληροφορική-επέκταση}}
{{Πληροφορική-επέκταση}}
Γραμμή 45: Γραμμή 48:
[[Κατηγορία:Επιστήμη υπολογιστών]]
[[Κατηγορία:Επιστήμη υπολογιστών]]
[[Κατηγορία:Προγραμματισμός]]
[[Κατηγορία:Προγραμματισμός]]



[[bg:Дебъгване]]
[[bg:Дебъгване]]

Έκδοση από την 23:14, 12 Ιουλίου 2011

Στην επιστήμη υπολογιστών αποσφαλμάτωση ή εκσφαλμάτωση καλούμε τη διαδικασία εύρεσης και εξάλειψης σφαλμάτων από αναπτυσσόμενα προγράμματα. Η αποσφαλμάτωση (debugging) γίνεται συνήθως με τη βοήθεια εξειδικευμένου λογισμικού, των αποσφαλματωτών (debuggers), οι οποίοι έχουν τη δυνατότητα να εκτελέσουν ένα εξωτερικό πρόγραμμα βήμα προς βήμα, να καταγράφουν σε κάθε στάδιο την κατάσταση του, να διακόπτουν τη ροή εκτέλεσης κλπ. Για να δουλέψει ένας εκσφαλματωτής πρέπει το προς εκσφαλμάτωση πρόγραμμα να περιέχει δεδομένα του πηγαίου κώδικα που τρέχει.

Σε Λειτουργικό σύστημα Linux αυτό γίνεται με την προσθήκη της παραμέτρου -g στην γραμμή εντολών που προκαλεί την μετάφραση του προγράμματος γραμμένου σε Ansi C. Ο αποσφαλματωτής καλείταi εκτελώντας την εντολή sdb ή adb ή gdb ή dbx.

Διαδικασία αποσφαλμάτωσης

Παρόλο που κάθε σφάλμα απαιτεί ξεχωριστή προσέγγιση γενικά ακολουθούνται τα εξής βήματα:

  1. Επανάληψη του προβλήματος
  2. Απομόνωση του σημείου που εμφανίζεται το σφάλμα
  3. Αναγνώριση της αιτίας που το προκαλεί
  4. Διόρθωση του σφάλματος
  5. Επιβεβαίωση της διόρθωσης

Επανάληψη του προβλήματος

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

Απομόνωση του σημείου που εμφανίζεται το σφάλμα

Μετά τη φάση της επανάληψης του προβλήματος, συνήθως χρησιμοποιείται η τεχνική του "διαίρει και βασίλευε", η διαίρεση, δηλαδή, του κώδικα σε επιμέρους λειτουργικά κομμάτια, όσο το δυνατόν μικρότερα, και ο έλεγχος αν κάποιο από αυτά προκαλεί πρόβλημα.

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

Αναγνώριση της αιτίας που το προκαλεί

Στο σημείο αυτό χρησιμοποιούνται διάφορες τεχνικές για την αναγνώριση της αιτίας. Το σφάλμα μπορεί να προέρχεται από λάθη στην πληκτρολόγηση του κώδικα ή από λογικά σφάλματα που είναι και τα πλέον δύσκολα να βρεθούν.

Διόρθωση του σφάλματος

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

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

Επιβεβαίωση της διόρθωσης

Η διαδικασία ολοκληρώνεται με τον έλεγχο της νέας, διορθωμένης, έκδοσης. Επιπλέον, ίσως χρειαστεί να ερευνηθεί αναλυτικότερα το πρόγραμμα, προκειμένου να διαπιστωθεί αν η διόρθωση δεν επέφερε άλλες ανεπιθύμητες παρενέργειες.

Τεχνικές αποσφαλμάτωσης

Χρήση προκαθορισμένων τιμών

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

Χρησιμοποίηση ειδικών σημείων ελέγχου

Τεχνική με την οποία γίνεται χρήση ειδικών σημείων ελέγχου μέσα στο πρόγραμμα όπου είτε καταγράφονται είτε εκτυπώνονται στην οθόνη ή σε εκτυπωτή οι τιμές διαφόρων μεταβλητών, που κάτω από κανονικές συνθήκες εκτέλεσης του προγράμματος δεν εμφανίζονται στον τελικό χρήστη.

Απλοϊκό παράδειγμα μπορεί να είναι η εμφάνιση της πλήρους αλλαγής που καλείται ο χρήστης να αποφασίσει αν θα την κάνει. Αν π.χ. ένα πρόγραμμα σε κανονικές συνθήκες απλά εμφανίζει στον χρήστη αν θέλει να συνεχίσει με την καταχώρηση, για λόγους αποσφαλμάτωσης, μπορεί να του παρουσιάζει και όλα τα προς καταχώρηση στοιχεία, με την ηλεκτρονική μορφή που θα καταχωρηθούν, επιπλέον από τη μορφή που τα "πέρασε" ο χρήστης.

Δείτε επίσης