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

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

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

 sudo apt-get να εγκαταστήσετε το gdb 

Για να χρησιμοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων, πρέπει να πείτε στον μεταγλωττιστή να συμπεριλάβει πληροφορίες εντοπισμού σφαλμάτων στο δυαδικό αρχείο. Δημιουργήστε ένα αρχείο με όνομα "hello10.c" χρησιμοποιώντας nano:

 nano hello10.c 

Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα:

 #include κύρια () {int i; για (i = 0, i <10, i ++) printf ("% d", i). }} 

Η σημαία "-g" λέει στον μεταγλωττιστή να παράγει πληροφορίες εντοπισμού σφαλμάτων, ώστε να καταρτίσει τη χρήση του προγράμματος:

 gcc -g -o hello10 hello10.c 

Για να ξεκινήσετε την εκτροπή του τύπου του προγράμματος:

 gdb hello10 

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

 break main 

Τώρα ξεκινήστε το πρόγραμμα:

 τρέξιμο 

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

Για να ελέγξετε την τιμή μιας μεταβλητής, χρησιμοποιήστε την εντολή "print". Στο πρόγραμμά μας, μπορούμε να εξετάσουμε το περιεχόμενο της μεταβλητής "i":

 εκτύπωση i 

Επαναλάβετε γύρω από τον βρόχο και λίγες φορές και δείτε πώς αλλάζει το "i":

 επόμενη επόμενη επόμενη επόμενη εκτύπωση i 

Στο παραπάνω παράδειγμα το "i" έχει φτάσει την τιμή 4. Ο βρόχος θα συνεχιστεί ενώ το "i" είναι μικρότερο από 10. Μπορείτε να αλλάξετε την τιμή μιας μεταβλητής χρησιμοποιώντας το "set var." Πληκτρολογήστε τα ακόλουθα στο gdb για να ορίσετε το "i" στο 10.

 ορίστε var i = 10 εκτύπωση i επόμενο 

Μπορεί να χρειαστεί να κάνετε ένα άλλο "επόμενο" (ανάλογα με το πού το πρόγραμμα σταμάτησε όταν ορίσατε το "i" στο 10), αλλά όταν εκτελείται η γραμμή βρόχου "for", ο βρόχος θα βγει, επειδή το "i" περισσότερο από 10.

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

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

Το πρόγραμμα θα σταματήσει στο κύριο (καθώς δεν καταργήσαμε το σημείο διακοπής). Τώρα ορίστε ένα ρολόι στο "i":

 συνεχίζω να παρακολουθώ 

Η εντολή "συνέχεια" ξεκινάει το πρόγραμμα να εκτελείται ξανά μέχρι την επόμενη συνθήκη σημείο διακοπής. Σε αυτή την περίπτωση θα τρέξει και πάλι μέχρι να μεταβληθεί η μεταβλητή "i" (λόγω του ρολογιού).

Για να σταματήσετε το σφάλμα, απλά χρησιμοποιήστε την εντολή "quit".

Εάν θέλετε να μάθετε περισσότερα για το gdb, τότε καλό σημείο για να ξεκινήσετε είναι η τεκμηρίωση του GDB. Εάν έχετε κάποιο πρόβλημα με τα παραπάνω παραδείγματα, χρησιμοποιήστε την παρακάτω ενότητα σχολίων και θα δούμε αν μπορούμε να βοηθήσουμε.