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

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Χωρίς σύνοψη επεξεργασίας
Kostast23 (συζήτηση | συνεισφορές)
Γενικότερη περιγραφή του όρου και αφαίρεση συγκεκριμένης πληροφορίας από την εισαγωγή.
Γραμμή 1: Γραμμή 1:
Στην [[επιστήμη υπολογιστών]] και στην [[ηλεκτρονική]], '''αποσφαλμάτωση''' ή '''εκσφαλμάτωση''' ονομάζεται η διαδικασία εύρεσης και εξάλειψης [[Σφάλμα κώδικα|σφαλμάτων κώδικα]] ή ελαττωμάτων ενός [[ηλεκτρονικό κύκλωμα|ηλεκτρονικού κυκλώματος]], ώστε να συμπεριφέρονται όπως σχεδιάστηκαν. Η αποσφαλμάτωση (debugging) γίνεται συνήθως με τη βοήθεια εξειδικευμένου [[λογισμικό|λογισμικού]], των '''αποσφαλματωτών''' (debuggers), οι οποίοι έχουν τη δυνατότητα να εκτελέσουν ένα εξωτερικό πρόγραμμα βήμα προς βήμα, να καταγράφουν σε κάθε στάδιο την κατάστασή του, να διακόπτουν τη ροή εκτέλεσης κλπ.
Στην [[επιστήμη υπολογιστών]] και στην [[ηλεκτρονική]], '''αποσφαλμάτωση''' ή '''εκσφαλμάτωση''' ονομάζεται η μεθοδική διαδικασία εύρεσης και εξάλειψης [[Σφάλμα κώδικα|σφαλμάτων κώδικα]] ενός [[Πρόγραμμα υπολογιστή|προγράμματος υπολογιστή]] ή ελαττωμάτων ενός [[ηλεκτρονικό κύκλωμα|ηλεκτρονικού κυκλώματος]], ώστε να συμπεριφέρεται όπως προβλέπεται. Η αποσφαλμάτωση τείνει να είναι δυσκολότερη όταν τα διάφορα υποσυστήματα είναι στενά συνδεδεμένα (tightly coupled), καθώς αλλαγές - διορθώσεις στο ένα μπορεί να είναι αιτία εμφάνισης σφαλμάτων σε ένα άλλο.

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


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

Έκδοση από την 08:09, 23 Ιουλίου 2015

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δείτε επίσης