Title: Debugging Post by: Jim D. Ace on October 05, 2012, 23:18:21 pm μπορει καποιος να μου εξηγησει 2-3 βασικα πραγματα για το debugging;
καποιες βασικες αρχες δλδ ή αν ξερει καποιο καλο tutorial στο ιντερνετ για "χαζους" :P βασικα θελω να μαθω να μπορω πχ να γνωριζω τι τιμες παιρνει μια μεταβλητη κατα τη διαρκεια εκτελεσης του προγραμματος και αλλα τετοια απλα υγ για ide χρησιμοποιω το codeblocks και για compiler το mingw Title: Re: Debugging Post by: Emfanever on October 05, 2012, 23:44:50 pm Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή
Title: Re: Debugging Post by: Tempus Fugit on October 05, 2012, 23:49:28 pm Υπάρχουν προγράμματα με gui που είναι debuggers, και αν κάνεις compile τον κώδικα σου με debugging symbols = ON
τότε μετά το φορτώνεις στον debugger, και εκεί υπάρχουν πολλά που μπορείς να κάνεις, το τρέχεις εντολή εντολή και μπορείς να δεις τι τιμές παίρνουν οι μεταβλητές. Αν απαντάω σωστά σ' αυτό που ρώτησες... Απλώς επειδή μάλλον χρησιμοποιείς windows δεν ξέρω κανένα. Σε ubuntu είναι η παράμετρος -g στον gcc/g++ και ένας κλασσικός (με gui) είναι ο Kdbg. (Ο gdb είναι ο native που εχει εντολες σε κονσόλα) Title: Re: Debugging Post by: BOBoMASTORAS on October 07, 2012, 01:33:52 am Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 Title: Re: Debugging Post by: Jim D. Ace on October 07, 2012, 01:36:12 am Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 αν και συντομα θα βαλω και λινουξ απλα θελω πρωτα να κανω ενα φορματ και μεσα στην εξεταστικη δεν ειχα και πολυ χρονο Title: Re: Debugging Post by: Emfanever on October 07, 2012, 01:50:04 am Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 Εντάξει σορρυ κιόλας , αλλά στα πλαίσια της σχολής αρκεί και με το παραπάνω. Και γιαυτό είπα "απλό". Τις "ψαγμένες" απαντήσεις τις αφήνουμε για σενα ως γνωστόν. Title: Re: Debugging Post by: pierrekif on October 07, 2012, 02:57:54 am Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. jtag ftw!! Title: Re: Debugging Post by: BOBoMASTORAS on October 07, 2012, 15:11:03 pm Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 Εντάξει σορρυ κιόλας , αλλά στα πλαίσια της σχολής αρκεί και με το παραπάνω. Και γιαυτό είπα "απλό". Τις "ψαγμένες" απαντήσεις τις αφήνουμε για σενα ως γνωστόν. ναι αρκεί.. αλλά το κάνεις κανονικό debugging σου γλυτώνει πάρα πολύ χρόνο, ακόμα και στις εργασίες τις σχολής. Οπότε αξίζει Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 αν και συντομα θα βαλω και λινουξ απλα θελω πρωτα να κανω ενα φορματ και μεσα στην εξεταστικη δεν ειχα και πολυ χρονο για windows πολύ καλός είναι το debugger του ms visual studio (πάρ το από το msdnaa) Απλά με τα εργαλία της ms πρόσεχε αυτό που γράφεις αν είναι καθαρή c/c++ ή παραλαγές της ms, διότι διαφορετικά θα καταλήξεις να μάθεις .net και όχι c/c++. Title: Re: Debugging Post by: megapixel on October 07, 2012, 16:29:54 pm Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 Εντάξει σορρυ κιόλας , αλλά στα πλαίσια της σχολής αρκεί και με το παραπάνω. Και γιαυτό είπα "απλό". Τις "ψαγμένες" απαντήσεις τις αφήνουμε για σενα ως γνωστόν. ναι αρκεί.. αλλά το κάνεις κανονικό debugging σου γλυτώνει πάρα πολύ χρόνο, ακόμα και στις εργασίες τις σχολής. Οπότε αξίζει Το πιο απλό που μπορείς να κάνεις είναι να βάλεις το πρόγραμμα να τυπώνει την τιμή της μεταβλητής που θες σε διάφορα σημεία του κώδικα και να βλέπεις αν είναι σωστή αυτό δεν είναι debugging.. μαλακία είναι :P :D Είναι πολύ σημαντικό να μάθετε να κάνετε debugging με debugger και step by step εκτέλεση. Βοηθάει πάρα πολύ στον χρόνο προγραμματισμού τόσο μέσα στη σχολή όσο και μετά. Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 αν και συντομα θα βαλω και λινουξ απλα θελω πρωτα να κανω ενα φορματ και μεσα στην εξεταστικη δεν ειχα και πολυ χρονο για windows πολύ καλός είναι το debugger του ms visual studio (πάρ το από το msdnaa) Απλά με τα εργαλία της ms πρόσεχε αυτό που γράφεις αν είναι καθαρή c/c++ ή παραλαγές της ms, διότι διαφορετικά θα καταλήξεις να μάθεις .net και όχι c/c++. Title: Re: Debugging Post by: Issle on October 07, 2012, 19:29:27 pm Σωστό κώδικα δε γράφεις όταν έχεις debugger αλλά όταν ο κώδικάς σου είναι testable ( Unit testing ). Αν χρειαστεί να μπει κανείς στα άδυτα του προγράμματος και της μηχανής ( εικονικής ή όχι ) στην οποία τρέχει αυτό, σημαίνει ότι κάτι δε δουλεύει σωστά και δεν είναι εμφανές το γιατί παρατηρώντας το σύστημα απέξω. Bad practice.
Για free λύση το Eclipse CDT παρέχει ικανοποιητικό IDE για debugging. Σου δείχνει γραφικά threads, variables, call stack κτλ και έχει σχετικά εύκολο managment και integration. Δεν έχει δικό του compiler/debugger, βάζεις τον gcc αν θες στις ρυθμίσεις και γράφεις καθαρή C++. @Megapixel Πέρα από τις διαφορές που μπορεί να έχουν οι υλοποιήσεις του compiler και του preprocessor, το ΝΕΤ framework σου δίνει την δυνατότητα να αναμίξεις διάφορες γλώσσες και metadata ( κάτι σαν Annotations ). Title: Re: Debugging Post by: SolidSNK on October 07, 2012, 20:00:49 pm gdb για linux, IDA για windows.
Title: Re: Debugging Post by: Δικαστής Μύρτιλος on October 07, 2012, 20:20:01 pm gdb για linux, IDA για windows. IDA είναι εξειδικευμένο για reversing, πρόγραμμα για απλό debugging θέλει ο άνθρωπος. Γίνεται βέβαια αλλά πιό πολύ ώρα θα ψάχνει πως να το δουλέψει παρά για καθ' αυτό debugging. Καλύτερη τύχη αν δεν θες να το ψάξεις πολύ είναι τα εργαλεία της microsoft, αλλιώς ollydbg ή gdb για windows. Title: Re: Debugging Post by: BOBoMASTORAS on October 07, 2012, 21:17:35 pm Εννοώ ότι είναι πολύ εύκολο να ξεφύγεις από την καθαρή C++ η οποία δουλεύει με βάση το προτυπο και αρχίσεις να γράφεις κώδικα ο οποίος κάνει compile μόνο στο visual studio και με το .net. Δε λέω καλό το .net αλλά καλό είναι να έχεις υπόψιν σου ότι το χρησιμοποιείς και πως σε περιορίζει ως ένα βαθμό στα εργαλεία της ms. Στην τελική αν χρειάζεσαι κάποιο framework για να γράψεις κώδικα το σωστό είναι να το επιλέξεις και όχι να χρησιμοποιήσεις το 1ο που βρήκες μπροστά σου. Στο VS δεν είναι τόσο σαφής αυτή η διάκριση. Τέλος το visual studio έχει και σαν ide πάρα πολλές επιλογές οι οποίες δεν είναι απαραίτητα στοχευμένες στο γράφεις σωστό κώδικα όσο στο να γράφεις γρήγορα και εύκολα. Ως εκ τούτου δε το συνιστώ για εκπαιδευτικούς λόγους. gdb για linux Γνώμη μου: ο debugger πρέπει να είναι γραφικό εργαλείο εκτός αν κάνεις κάτι πολύ εξειδικευμένο. Σου προσφέρει πολύ καλύτερη αντίληψη του τι συμβαίνει ανα πάσα στιγμή στον κώδικα. Προφανώς ο gdb από κονσόλα μπορεί να κάνει πολύ περισσότερα από το οποιοδήποτε γραφικό εργαλείο, αλλά στο 90% των περιπτώσεων δε το χρειάζεσαι. Title: Re: Debugging Post by: Jim D. Ace on October 08, 2012, 01:37:27 am τελικα βρηκα ακρη με τη βοηθεια του exomag και μου πε 2-3 πραγματακια που με ενδιεφεραν (οπως παρακολουθηση των τιμων των μεταβλητων) πως γινονται με το codeblocks
ευχαριστω για τις απαντησεις :) υγ ms visual studio ειχα βαλει παλιοτερα αλλα να σας πω την αληθεια χαθηκα και μπερδευτηκα :-[ και αφου ειδα οτι για αυτα που ηθελα το codeblocks ηταν μια χαρα τοτε εμεινα με αυτο Title: Re: Debugging Post by: SolidSNK on October 08, 2012, 01:56:57 am gdb για linux Γνώμη μου: ο debugger πρέπει να είναι γραφικό εργαλείο εκτός αν κάνεις κάτι πολύ εξειδικευμένο. Σου προσφέρει πολύ καλύτερη αντίληψη του τι συμβαίνει ανα πάσα στιγμή στον κώδικα. Προφανώς ο gdb από κονσόλα μπορεί να κάνει πολύ περισσότερα από το οποιοδήποτε γραφικό εργαλείο, αλλά στο 90% των περιπτώσεων δε το χρειάζεσαι. gdb για linux, IDA για windows. IDA είναι εξειδικευμένο για reversing, πρόγραμμα για απλό debugging θέλει ο άνθρωπος. Γίνεται βέβαια αλλά πιό πολύ ώρα θα ψάχνει πως να το δουλέψει παρά για καθ' αυτό debugging. Καλύτερη τύχη αν δεν θες να το ψάξεις πολύ είναι τα εργαλεία της microsoft, αλλιώς ollydbg ή gdb για windows. Title: Re: Debugging Post by: BOBoMASTORAS on October 08, 2012, 02:12:33 am Ίσως, δεν έχει τύχει να χρησιμοποιήσω κάποιον με γραφικό περιβάλλον. Γιατί όχι kgdb :???: για kernel debugging δεν είναι αυτός? Title: Re: Debugging Post by: SolidSNK on October 08, 2012, 02:36:47 am Ίσως, δεν έχει τύχει να χρησιμοποιήσω κάποιον με γραφικό περιβάλλον. Γιατί όχι για kernel debugging δεν είναι αυτός? Yup για kernel debugging είναι. Title: Re: Debugging Post by: BOBoMASTORAS on October 08, 2012, 04:04:39 am ε ναι τότε συμφωνώ:
Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0 |