Δευτέρα 20 Σεπτεμβρίου 2010

Debugging - Αποσφαλμάτωση

Διαβάζοντας χρόνια διάφορα forums έχω διαπιστώσει οτι πολλά άτομα ανοίγουν νήματα μόνο και μόνο για να τους αποσφαλματωθεί ένα μικρο πρόγραμμα από κάποιον χρηστή. Σήμερα διαβάζοντας ένα νήμα τύπου "Τι IDE προτείνετε.." είδα να προτείνουν απλούς κειμενογράφους  με κάποια "συν"... Έφριξα, και έτσι λέω να γράψω ένα από τα ΤΕΡΆΣΤΙΑ συν που έχει ένα IDE
και αυτό δεν είναι άλλο από τον debuger. Αν διαβάσετε το παρακάτω, θα ξεχάσετε πλέον τον άχρηστο κωδικά που βάζετε σε ένα πρόγραμμα πχ system("Pause") getchar() cin.get() Console.Read() System.in.read() etc... συν άκυρα console prints ή messageboxes

Τι είναι το debugging;
Προσωπικά το θεωρώ το απόλυτο εργαλείο. Χοντρικά, με το debugging επεξεργάζεσαι το source την ώρα που το πρόγραμμα εκτελείται. Συν οτι μπορείς να αλλάξεις την ροή του προγράμματος. Ποια τα όρια του; Δεν έχει όρια. Σε ποιες γλώσσες υπάρχει; Νομίζω σε όλες.

Λοιπόν το IDE που θα χρησιμοποιήσω είναι το visual studio 10 και η γλώσσα c++. Να σημειώσω οτι όλα τα IDE έχουν την δυνατότητα του debuger.
Να και το IDE μου

Στη φοτο βλέπετε μια εξοχή (σημείο 1), αυτή υπάρχει σε όλα τα IDE (που έχω δοκιμάσει :P) και είναι για να βάζουμε τα

1) Bookmarks: Μαρκάρουμε κάποια γραμμή, και έτσι μπορούμε να πάμε σε αυτή πατώντας next bookmark. Χρήσιμο όταν δουλεύουμε πάνω σε 2-3 αρχεία μαζί, το σύμβολο είναι συνήθως ένα τετραγωνάκι
πχ


2) Breakpoints: Τα breakpoints σταματάνε την ροή του προγράμματος και αρχίζει το debugging
Με το που θα φτάσει η εκτέλεση στο πρώτο breakpoint το πρόγραμμα σταματάει. Δεν τερματίζει, αλλά σταματάει στο σημείο που είναι το breakpoint. Όταν σταματήσει, βλέπουμε όλες της μεταβλητές με τις τιμές τους.
Στη κατάσταση αυτή μπορούμε να αλλάξουμε τις τιμές και να αλλάξουμε το source. Όταν τελειώσουμε την επεξεργασία μπορούμε να προχωρήσουμε το πρόγραμμα είτε μέχρι το τέλος (πατώντας run) είτε μέχρι την επομένη γραμμή κωδικά (πατώντας step into).

Πιο συκγεκριμένα.
Πατώντας
Run: Συνεχίζει η ροή του προγράμματος μέχρι να τερματίσει ή να βρει το επόμενο breakpoint.
Step over: Πηγαίνει στην επομένη γραμμή κωδικά, και το πρόγραμμα μένει σε παύση.
Step into:  Το ίδιο με το step over με τη διαφορά οτι αν η επομένη γραμμή είναι κάλεσμα μιας συνάρτησης τότε μπαίνει στη συνάρτηση κάτι που δεν κάνει η παραπάνω(step over).
Step out:  Βγαίνουμε από την συνάρτηση (στην οποία μπήκαμε με την step into).
Εδώ τα καλά debug!

1 σχόλιο:

  1. Ωραίος! Μόνο που κάπου γράφεις brakpoints αντί για breakpoints. Αυτή η διόρθωση μόνο χρειάζεται και είσαι τέλειος! ;)

    ΑπάντησηΔιαγραφή