Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

To step into στο eclipse στο εκτελεί απο το breakpoint που έχεις ορίσει και στη συνέχεια γραμμή - γραμμή ανεξάρτητα από το αν έχεις βάλει breakpoint. Ανάλογα δηλαδή με τη ροή. Όταν λέω με τη ροή, αν καλείς μια μέθοδο θα πάει στη μέθοδο κτλ.

 

Η ερώτηση είναι τι παραπάνω προσφέρουν τα logging frameworks από το debug. Δε νομίζω ότι είναι διαφορετικά, εκτός του ότι το ένα είναι commercial.

Όπως σου είπε και ο defacer, έχεις ένα set από buttons για το debugging. Δοκίμασε να δεις τι κάνουν. Πέρα από το step into έχεις step/step over, run, step out. Επίσης, έχεις stack trace και άλλες λειτουργίες που δεν θυμάμαι από στήθους.

 

Φτιάξε ένα μικρό case, e.g. μία κλάση, 2 - 3 μεθόδους (e.g. int foo(int a, int b ) { int x = a + b; return x; }) και δες τι κάνει κάθε λειτουργία.

 

Μετά πας σε test units για καλύτερο έλεγχο του τι έχει φτιαχτεί.

Δημοσ.

Θέλω να φτιάξει ο Defacer Step Back να πάρει ίσα με σαράντα χρυσά στο Stack Overflow..άμεσα!

Φυσικά AlliCHAOS η ειρωνεία είναι περιττή. Δύο πράγματα συμβαίνουν, ή είσαι εντελώς βλάκας, ή είσαι για λύπηση λόγω κατάστασης... που προσβάλεις για να ξεδώσεις.

Γιατί δεν αντιλαμβάνεσαι ότι αυτός που εκθέτει ένα ζήτημα δεν το κάνει για να τον δουλεύουν. Και βλακεία να σκεφτεί οφείλει κανείς με σοβαρό τρόπο να του απαντήσει. Τι συμπέρασμα να βγάλει από την συμμετοχή σου; Σαν να του λες να μην ξαναγράψει, θα του την πεις πάλι..

Για έλα στα καλά σου λοιπόν.... 

 

Το παραπάνω είναι η απάντηση σου σε ένα παρόμοιο μου post! Αρχικά είπα να το προσπεράσω και να μη πω τίποτα αλλά δεν άντεξα...Φυσικά στη δικιά σου περίπτωση εδώ αναφέρεις πως τα αστεία πλέον χαρακτηρίζονται ως κατάντια...μαααλιστααα

 

Edit: Sorry για το off topic

  • Like 1
Δημοσ.

Ναι το έκανα επειδή..με χαροποίησε η συμπεριφορά του Defacer στο Step Back. Και ασφαλώς δεν τον "δουλεύω" τον άνθρωπο. Αλίμονο, δεν είμαι σε τέτοια θέση, και δεν είναι σωστό! Αλλά βλέπω πόσο δύσκολο είναι να δει κανείς την αλήθεια, όταν είναι εμπαθής...Αυτό είναι για σένα ALLisCHAOS...Αλλά τι να λέμε αφού ALL is CHAOS....(πράγματι)

:-D

Δημοσ.

Το step back παίζει να είναι πολύ ακριβό για να υλοποιηθεί. Πρέπει να κρατάς αποθηκευμένο το architectural context πριν εκτελεστεί κάθε εντολή. Όσες εντολές σε ένα εκτελέσιμο, τόσα και τα context που πρέπει να κρατήσεις (χοντρικά). Κάπως έτσι το φαντάζομαι.

Δημοσ.

Ή όλο το flow μέχρι και ένα βήμα πίσω και μόλις πατήσεις step back, ξανατρέχει το flow μέχρι το προηγούμενο βήμα. 

 

 

Αυτό σε συστήματα που κάνουν ακριβούς υπολογισμούς (π.χ. matrices multiplications) θα παίρνει ώρα... 

Δημοσ.

Θα έπρεπε να υπήρχε ένα UNDO, το οποίο θα έφερνε μια πρότερη κατάσταση, π.χ. ένα memory dump και ένα register list. Αλλά το πότε θα καταχωρούσε ίσως να γίνονταν με ένα Break Point (όπου θα ζήταγες να κάνει save state). 

Γίνεται πάντως αν τρέχεις σε VM και σώσεις την κατάσταση! Χωρίς Breakpoint...αλλά ξοδεύεις χώρο στο σκληρό δίσκο (και μάλιστα αρκετό).

Δημοσ.

Το step back παίζει να είναι πολύ ακριβό για να υλοποιηθεί. Πρέπει να κρατάς αποθηκευμένο το architectural context πριν εκτελεστεί κάθε εντολή. Όσες εντολές σε ένα εκτελέσιμο, τόσα και τα context που πρέπει να κρατήσεις (χοντρικά). Κάπως έτσι το φαντάζομαι.

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

 

π.χ. κάνεις select βρίσκεις δεδομένα στο socket και τα διαβάζεις. Step back και μετά τι; Ο debugger θα πειράξει το network stack του λειτουργικού για να είναι πάλι selectable το socket?

 

Από usermode debugger προφανώς είναι ένα δισεκατομμύριο πράγματα που δεν παίζουν. Από kernel mode debugger βαριέμαι να σκεφτώ αλλά έχει σημασία; :)

  • Like 1
Δημοσ.

Ή όλο το flow μέχρι και ένα βήμα πίσω και μόλις πατήσεις step back, ξανατρέχει το flow μέχρι το προηγούμενο βήμα. 

 

 

Αυτό σε συστήματα που κάνουν ακριβούς υπολογισμούς (π.χ. matrices multiplications) θα παίρνει ώρα... 

Απλά για στοχαστικά φαινόμενα δε θέλουμε κάτι τέτοιο.

Δημοσ.

Μπορείς να χρησιμοποιήσεις doxygen για να οπτικοποιήσεις (αν όχι to document) το πρόγραμμα σου και απο εκει πέρα, βλέπεις τη δομή και ακολουθείς βήμα προς βήμα debugging. 

 

Γενικά παιδια, να χρησιμοποιείτε doxygen (γαμεί και δέρνει), αν όχι για τον κώδικα που παραδίδετε, αλλά για τον κώδικα που αναπτύσσετε. 

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...