User Tools

Site Tools


qna:misc:runtime:crash-or-long-return-value

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
qna:misc:runtime:crash-or-long-return-value [2021/04/24 09:29]
xallos
qna:misc:runtime:crash-or-long-return-value [2021/06/05 14:59]
xallos
Line 14: Line 14:
   * Πρόσβαση σε στοιχεία του πίνακα **έξω από τα όρια του πίνακα** (είτε με αρνητικό δείκτη, είτε δείκτη μεγαλύτερο ή ίσο από το μήκος του πίνακα).   * Πρόσβαση σε στοιχεία του πίνακα **έξω από τα όρια του πίνακα** (είτε με αρνητικό δείκτη, είτε δείκτη μεγαλύτερο ή ίσο από το μήκος του πίνακα).
   * Η τιμή ενός δείκτη (**pointer**) να **είναι ''NULL''** ή να δείχνει σε σημείο μνήμης **που δεν θα έπρεπε** (π.χ. μνήμη που δεν ανήκει στο πρόγραμμά σας ή μνήμη που δεν επιτρέπεται η εγγραφή).   * Η τιμή ενός δείκτη (**pointer**) να **είναι ''NULL''** ή να δείχνει σε σημείο μνήμης **που δεν θα έπρεπε** (π.χ. μνήμη που δεν ανήκει στο πρόγραμμά σας ή μνήμη που δεν επιτρέπεται η εγγραφή).
 +  * Μία περίπτωση όπου η μνήμη δεν επιτρέπει την εγγραφή είναι στη μνήμη που αντιστοιχεί σε κείμενο δηλωμένο μέσα στον κώδικα σε διπλά εισαγωγικά.
  
 ==== Μέθοδοι επίλυσης ==== ==== Μέθοδοι επίλυσης ====
Line 26: Line 27:
  
 Δεν πρέπει ποτέ να ξεχνάτε ότι στο τέλος, όταν λυθεί το πρόβλημα, πρέπει να αφαιρούνται όλες αυτές οι πρόσθετες ''printf''. Δεν πρέπει ποτέ να ξεχνάτε ότι στο τέλος, όταν λυθεί το πρόβλημα, πρέπει να αφαιρούνται όλες αυτές οι πρόσθετες ''printf''.
 +
 +=== Με τη χρήση του Debugger ===
 +
 +Αφού αφαιρέσετε ή απενεργοποιήσετε όλα τα breakpoints, εκτελέστε τον κώδικα μέσω του debugger. Τότε η εκτέλεση θα διακοπεί στη γραμμή που παράγει το σφάλμα.
 +
 +Προσέξτε ότι η γραμμή αυτή δεν είναι απαραίτητα η λανθασμένη, αλλά μπορεί να είναι αυτή που παρουσιάζει την... παρενέργεια του σφάλματος που υπάρχει σε άλλη γραμμή.
 +
 +<WRAP important>**Προσοχή!** Υπάρχουν μερικές περιπτώσεις που αυτή η μέθοδος δεν βοηθά, αυτό π.χ. συμβαίνει ότι η εκτέλεση τερματίζεται μέσα σε κάποια συνάρτηση του συστήματος. Σε αυτές τις περιπτώσεις, εάν υπάρχει η δυνατότητα μπορεί να μας βοηθήσει το stack trace που εμφανίζεται αριστερά στα εργαλεία του debugger.
 +
 +Μερικές φορές όμως δεν αρκεί ούτε αυτό. Για αυτές τις ελάχιστες περιπτώσεις μας μένει η ''printf'' όπως περιγράφεται παραπάνω, η εμπειρία του προγραμματιστή και η φαντασία του!</WRAP>
 +
 +
qna/misc/runtime/crash-or-long-return-value.txt · Last modified: 2022/05/28 16:47 by xallos