THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => C / C++ / C# => Topic started by: Jim D. Ace on October 05, 2012, 23:18:21 pm



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
για windows ξερεις κανενα;
αν και συντομα θα βαλω και λινουξ απλα θελω πρωτα να κανω ενα φορματ και μεσα στην εξεταστικη δεν ειχα και πολυ χρονο


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 ξερεις κανενα;
αν και συντομα θα βαλω και λινουξ απλα θελω πρωτα να κανω ενα φορματ και μεσα στην εξεταστικη δεν ειχα και πολυ χρονο

για 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 ξερεις κανενα;
αν και συντομα θα βαλω και λινουξ απλα θελω πρωτα να κανω ενα φορματ και μεσα στην εξεταστικη δεν ειχα και πολυ χρονο

για 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% των περιπτώσεων δε το χρειάζεσαι.
Ίσως, δεν έχει τύχει να χρησιμοποιήσω κάποιον με γραφικό περιβάλλον. Γιατί όχι kgdb  :???:

gdb για linux, IDA για windows.

IDA είναι εξειδικευμένο για reversing, πρόγραμμα για απλό debugging θέλει ο άνθρωπος. Γίνεται βέβαια αλλά πιό πολύ ώρα θα ψάχνει πως να το δουλέψει παρά για καθ' αυτό debugging.

Καλύτερη τύχη αν δεν θες να το ψάξεις πολύ είναι τα εργαλεία της microsoft, αλλιώς ollydbg ή gdb για windows.
Εξαιρετικός και ο olly και είναι όντως πιο άμεσος από τον IDA.


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
Ίσως, δεν έχει τύχει να χρησιμοποιήσω κάποιον με γραφικό περιβάλλον. Γιατί όχι kgdbkdbg  :???:

για kernel debugging δεν είναι αυτός?

woops kdbg εννοούσα!

Yup για kernel debugging είναι.


Title: Re: Debugging
Post by: BOBoMASTORAS on October 08, 2012, 04:04:39 am
ε ναι τότε συμφωνώ:

Για linux εγώ χρησιμοποιώ το kdbg προφανώς πρέπει να έχεις κάνεις compile με -g και (κατά προτίμηση) χωρίς optimizations -O0