απορία; ΟΤΑΝ ΕΧΕΙΣ ΑΠΟΡΙΑ

Εκσφαλμάτωση προγράμματος

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

Γ΄ Λυκείου · Πληροφορική · 15 λεπτά

Το μάθημα είναι στο σχολικό βιβλίο. Δεν το αντιγράφουμε εδώ. Άνοιξε το επίσημο κεφάλαιο και γύρνα για την εξάσκηση.

Άνοιγμα βιβλίου ↗

Η σύνοψη, οι όροι και οι ασκήσεις γράφτηκαν με τη βοήθεια τεχνητής νοημοσύνης από το σχολικό βιβλίο και μπορεί να έχουν λάθη. Πηγή είναι πάντα το βιβλίο: ό,τι σου φαίνεται περίεργο, έλεγξέ το εκεί. Βρήκες λάθος; Γράψε μας στο aporia@signmak.com.

Σχεδιάγραμμα

Δική μας σύνοψη της ενότητας, για επανάληψη. Πηγή είναι πάντα το βιβλίο.

Τι έγινε

  1. Τα λάθη υλοποίησης προέρχονται από λανθασμένη σύνταξη· ο μεταγλωττιστής τα εντοπίζει και τα σύγχρονα περιβάλλοντα ελέγχουν τη σύνταξη την ώρα που γράφουμε.
  2. Τα λάθη εκτέλεσης εμφανίζονται στο πραγματικό περιβάλλον, π.χ. διαίρεση με το μηδέν, υπερχείλιση μεταβλητής ή βλάβη υλικού, και αντιμετωπίζονται μόνο με εντολές που τα παγιδεύουν.
  3. Τα λογικά λάθη είναι λάθη σχεδιασμού: το πρόγραμμα τρέχει αλλά δεν δίνει τα σωστά αποτελέσματα.
  4. Η σελίδα αναφέρει γνωστά λάθη λογισμικού: Mariner 1 (1962), δίκτυο AT&T (1990), επεξεργαστής Pentium (1994), αεροδρόμιο του Denver (1995) και το πρόβλημα του έτους 2000.
  5. Εκσφαλμάτωση (debugging) είναι ο έλεγχος, ο εντοπισμός και η διόρθωση των σφαλμάτων· τη βοηθούν τα σχόλια και τα ονόματα μεταβλητών που δείχνουν το περιεχόμενό τους.
  6. Εργαλεία εκσφαλμάτωσης: εκφράσεις ελέγχου, σημεία διακοπής, βήμα προς βήμα εκτέλεση, ιστορικό, ιχνηλάτηση και άμεση εκτέλεση· χωρίς αυτά βοηθούν εντολές εμφάνισης τιμών.
  7. Στον χειρισμό λαθών εκτέλεσης κάθε λάθος δίνει έναν κωδικό και η ροή περνά σε τμήμα χειρισμού (exception ή error handler)· Java, ADA και C++ χρησιμοποιούν εξαιρέσεις.

Όροι

λάθος υλοποίησης
συντακτικό, το εντοπίζει ο μεταγλωττιστής
λάθος εκτέλεσης
λάθος που εμφανίζεται όσο τρέχει
λογικό λάθος
τρέχει αλλά δίνει λάθος αποτέλεσμα
bug
λάθος σε πρόγραμμα, από το έντομο
εκσφαλμάτωση (debugging)
εντοπισμός και διόρθωση σφαλμάτων
έλεγχος (testing)
ο τρόπος να βρεθούν τα λογικά λάθη
πρόγραμμα διόρθωσης
debugger
έκφραση ελέγχου
παρακολουθεί τιμή μεταβλητής
σημείο διακοπής
σταματά την εκτέλεση πριν από εντολή
βήμα προς βήμα εκτέλεση
μία εντολή κάθε φορά
ιστορικό
οι τελευταίες εντολές που εκτελέστηκαν
ιχνηλάτηση
αργή εκτέλεση με φωτισμένη εντολή
άμεση εκτέλεση
πληκτρολογούμε εντολή σε σημείο διακοπής
κωδικός λάθους
αριθμός που περιγράφει το λάθος
τμήμα χειρισμού λάθους
exception ή error handler
εξαιρέσεις
μηχανισμός λαθών σε Java, ADA, C++
πρόβλημα του έτους 2000
millennium bug, λογισμικό και υλικό
Mariner 1
χάθηκε το 1962 από λάθος πρόσημο

ΠΑΙΞΕ ΤΟΤηλεπαιχνίδι · Η Σκάλα · Η Τελεία · Χρονογραμμή · Κρεμάλα · όλα με την ύλη αυτού του μαθήματος.

Εξάσκηση

Συχνές απορίες

Ποιες είναι οι κατηγορίες λαθών σε ένα πρόγραμμα;

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

Πώς βρίσκονται τα λογικά λάθη;

Κανένα εργαλείο δεν τα εντοπίζει αυτόματα, γιατί ούτε ο μεταγλωττιστής βρίσκει συντακτικό λάθος ούτε η εκτέλεση σταματά. Φαίνονται μόνο με τον έλεγχο (testing) και την ανάλυση των αποτελεσμάτων.

Τι μπορεί να κάνει ένα πρόγραμμα όταν παρουσιαστεί λάθος στην εκτέλεση;

Ο μηχανισμός ανίχνευσης στέλνει τη ροή σε τμήμα χειρισμού λάθους. Εκεί το πρόγραμμα μπορεί να διορθώσει την αιτία (ή να ζητήσει από τον χρήστη) και να ξαναδοκιμάσει την εντολή, να προχωρήσει στην επόμενη αν η εντολή δεν είναι κρίσιμη, ή, ως έσχατη λύση, να ενημερώσει και να τερματίσει.

Ανοίγει το μενού κοινοποίησης του κινητού σου. Αν δεν υπάρχει, αντιγράφεται ο σύνδεσμος.

Νέα από το aporia.gr Νέες ενότητες και ό,τι βρίσκουμε στα θέματα των Πανελληνίων, στη σελίδα μας στο Facebook.