GDB (επίσης γνωστό ως GNU Project debugger) είναι ένα λογισμικό ανοιχτού κώδικα και δωρεάν γραμμής εντολών που επιτρέπει στους χρήστες και στους προγραμματιστές να δουν τι συμβαίνει στο εσωτερικό ενός άλλου προγράμματος, ενώ είναι εκτελέστηκε ή γιατί μια εφαρμογή συντρίβει σε ένα συγκεκριμένο σημείο.
Χαρακτηριστικά με μια ματιά
Τα βασικά χαρακτηριστικά περιλαμβάνουν τέσσερις διαφορετικές τεχνικές για να βοηθήσουν τους προγραμματιστές να εντοπίσουν τα σφάλματα στην πράξη, να ξεκινήσουν μια εφαρμογή και να προσδιορίσουν οτιδήποτε μπορεί να επηρεάσει τη συμπεριφορά τους, να σταματήσουν το πρόγραμμα σε συγκεκριμένες συνθήκες, να εξετάσουν τα αρχεία καταγραφής όταν συνετρίβη η εφαρμογή, ένα πρόγραμμα για να πειραματιστείτε με τη διόρθωση των αποτελεσμάτων ενός θέματος και να συνεχίσετε μαθαίνοντας για ένα άλλο σφάλμα. Υποστηρίζει επίσης το σφάλμα σε προγράμματα γραμμένα σε ένα ευρύ φάσμα γλωσσών προγραμματισμού, συμπεριλαμβανομένων των C, C ++, Pascal , Ada, Στόχος-Γ και πολλά άλλα.
Είναι μια εφαρμογή γραμμής εντολών
Το πρόγραμμα εντοπισμού σφαλμάτων του GNU Project είναι πάντα μια εφαρμογή γραμμής εντολών. Για να το χρησιμοποιήσετε, πρέπει να εκτελέσετε το & ldquo; gdb & rdquo; εντολή σε έναν εξομοιωτή τερματικού, στη συνέχεια εκτελέστε το & ldquo; help & rdquo; εντολή (χωρίς εισαγωγικά) μια εντολή gdb. Επιπλέον, μπορείτε επίσης να πληκτρολογήσετε το & ldquo; help all & rdquo; για να δείτε μια λίστα με όλες τις εντολές, πληκτρολογήστε "help" ακολουθούμενη από το όνομα της εντολής για να δείτε την πλήρη τεκμηρίωση, πληκτρολογήστε "help" ακολουθούμενη από ένα όνομα κλάσης για να δείτε μια λίστα εντολών στην τάξη αυτή, για να πληκτρολογήσετε "apropos word" για εντολές που σχετίζονται με "λέξη".
Κατάλογος κατηγοριών εντολών
Αφού πληκτρολογήσετε το & ldquo; help & rdquo; (για την εξέταση των αρχείων), τα αρχεία (για την εξέταση των αρχείων), τα αρχεία (για την εξέταση των αρχείων), τα αρχεία (για την εξέταση των αρχείων) , εσωτερικά (εντολές συντήρησης), ασαφή (σκοτεινά χαρακτηριστικά), λειτουργία (για εκτέλεση του προγράμματος), στοίβα (για εξέταση της στοίβας), κατάσταση (για αιτήματα κατάστασης) τερματισμός του προγράμματος) και καθορισμένες από το χρήστη (εντολές που ορίζονται από το χρήστη).
Υποστηριζόμενες πλατφόρμες υλικού και OSes
Το GDB έχει σχεδιαστεί από το offset ως μια εφαρμογή πολλαπλών πλατφορμών, που τρέχει σε βασικά λειτουργικά συστήματα όπως τα Microsoft Windows και μερικές από τις πιο δημοφιλείς παραλλαγές Linux / UNIX. Υποστηρίζεται σε πλατφόρμες υλικού 32-bit και 64-bit.
Τι είναι καινούργιο σε αυτή την έκδοση:
- PR gdb / 22824 (παραπλανητική περιγραφή της νέας λειτουργίας Python στο GDB 8.1 αρχείο NEWS)
- PR gdb / 22849 (το ctrl-c δεν λειτουργεί σε εκτεταμένο απομακρυσμένο)
- PR gdb / 22907 (Ο [Regression] gdbserver δεν λειτουργεί με δυαδικά αρχεία μόνο για αρχεία)
- PR gdb / 23028 (ασυνεπής αποσυναρμολόγηση του vcvtpd2dq)
- PR gdb / 23053 (Ρύθμιση -D_GLIBCXX_DEBUG παλινδρόμηση gdb-add-index)
- PR gdb / 23127 ([AArch64] Το GDB δεν μπορεί να χρησιμοποιηθεί για λογισμικό εντοπισμού σφαλμάτων που χρησιμοποιεί υψηλές εικονικές διευθύνσεις)
- διακομιστής PR / 23158 (ο gdbserver δεν λειτουργεί πλέον στα Windows)
- Σημεία διακοπής PR / 23210 ([8.1 / 8.2 Regression] Διόρθωση διεύθυνσης σημείου διακοπής προσαρμοσμένη από 0xf7fe7dd3 σε 0xfffffffff7fe7dd3)
Τι νέο υπάρχει στην έκδοση 8.1:
- Τα σημεία διακοπής των λειτουργιών C ++ έχουν πλέον ρυθμιστεί σε όλα τα πεδία από προεπιλογή (& quot; wild & quot; matching)
- Υποστήριξη για την εισαγωγή σημείων διακοπής στις λειτουργίες που σημειώνονται με ετικέτες C ++ ABI
- Στόχευση της αριθμητικής προσομοίωσης κυμαινόμενου σημείου κατά την αξιολόγηση έκφρασης (απαιτείται MPFR 3.1 ή νεότερη)
- Διάφορες βελτιώσεις του Python Scripting
- Βελτιωμένη υποστήριξη σκουριάς. Συγκεκριμένα, τα αντικείμενα Trait μπορούν τώρα να επιθεωρηθούν κατά τον εντοπισμό σφαλμάτων κώδικα σκουριάς.
- Το GDB δεν κάνει πια υποθέσεις σχετικά με τον τύπο των συμβόλων χωρίς πληροφορίες εντοπισμού σφαλμάτων, προκειμένου να αποφευχθεί η παραγωγή εσφαλμένων και συχνά συγκεχυμένων αποτελεσμάτων.
- Οι εντολές 'enable' και 'disable' δέχονται τώρα ένα εύρος θέσεων διακοπής,
- Νέα εντολή «starti» για την εκκίνηση του προγράμματος στην πρώτη εντολή
- Νέα εντολή "rbreak" για εισαγωγή ενός αριθμού σημείων διακοπής μέσω ενός μοτίβου κανονικής έκφρασης (απαιτείται Python)
- Η εντολή 'ptype' υποστηρίζει τώρα την εκτύπωση της μετατόπισης και του μεγέθους των πεδίων σε ένα struct
- Η εντολή gcore υποστηρίζει τώρα την απομάκρυνση όλων των αντιστοιχίσεων μνήμης ('-a' επιλογή γραμμής εντολών)
- Νέες συντομεύσεις για τη λειτουργία TUI με ένα πλήκτρο: 'i' για το steppi και 'o' για το nexti.
- Αξεσουάρ του GDBserver:
- Υποστήριξη για τη μετάδοση μεταβλητών περιβάλλοντος στο GDBserver
- Υποστήριξη για την εκκίνηση κατώτερων διαδικασιών με έναν καθορισμένο αρχικό κατάλογο εργασίας
- Σε συστήματα Unix, υποστήριξη για επέκταση σφαιρών και μεταβλητή υποκατάσταση παραμέτρων κατώτερης γραμμής εντολών
- Διάφορες βελτιώσεις ολοκλήρωσης
- Η εντολή που χρησιμοποιείται για την μεταγλώττιση και την έγχυση κώδικα με την εντολή 'compile' είναι τώρα ρυθμιζόμενη,
- Νέα επιλογή γραμμής εντολών '-readnever' για την επιτάχυνση της εκκίνησης του GDB όταν δεν χρειάζονται πληροφορίες εντοπισμού σφαλμάτων.
- Υποστήριξη για τις ακόλουθες νέες εγγενείς ρυθμίσεις:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *)
- FreeBSD / βραχίονας (βραχίονας * - * - freebsd *)
- Υποστήριξη για τους ακόλουθους νέους στόχους:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *)
- FreeBSD / βραχίονας (βραχίονας * - * - freebsd *)
- OpenRISC ELF (ή1k * - * - elf)
- Αφαιρέθηκε η υποστήριξη για τους ακόλουθους στόχους και τις εγγενείς διαμορφώσεις:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9])
- Solaris2 / sparc (sparc * - * - solaris2. [0-9])
Τι νέο υπάρχει στην έκδοση:
- Η κατασκευή αυτής της έκδοσης του GDB απαιτεί τώρα τα ακόλουθα εργαλεία:
- Μεταγλωττιστής C ++-11 (για παράδειγμα, GCC 4.8 ή νεότερη)
- GNU κάνει την έκδοση 3.81 ή μεταγενέστερη.
- Οι αλλαγές σε αυτήν την έκδοση περιλαμβάνουν:
- C ++: Υποστήριξη αναφορών rvalue
- Αξεσουάρ δέσμης ενεργειών Python:
- Νέες λειτουργίες για να ξεκινήσετε, να σταματήσετε και να αποκτήσετε πρόσβαση σε μια τρέχουσα εγγραφή btrace.
- Υπολογίστε την υποστήριξη αναφοράς σε gdb.Type.
- Οι εντολές GDB διερμηνέα:
- Οι εντολές χρηστών δέχονται πλέον απεριόριστο αριθμό επιχειρημάτων.
- Το πεδίο "eval" η εντολή τώρα διευρύνει τα επιχειρήματα που ορίζονται από το χρήστη.
- υποστήριξη DWARF έκδοσης 5
- (Σημειώστε ότι ο δείκτης .debug_names δεν υποστηρίζεται ακόμα).
- Βελτιώσεις GDB / MI:
- Νέα εντολή -file-list-shared-libraries για τη λίστα των κοινόχρηστων βιβλιοθηκών στο πρόγραμμα.
- Νέα εντολή -target-flash-delete, για να διαγράψετε τη μνήμη flash.
- Υποστήριξη για native FreeBSD / mips (mips * - * - freebsd)
- Υποστήριξη για τους ακόλουθους στόχους:
- Synopsys ARC (τόξο * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Διάφορες βελτιώσεις:
- Η ανακατεύθυνση γραμμής εντολών υποστηρίζεται τώρα από κεντρικούς υπολογιστές MS-Windows.
- Υποστήριξη για ονόματα νήματος στα MS-Windows.
- Υποστήριξη για το μητρώο PKU στο GNU / Linux.
- Υποστήριξη περιγραφών στόχων για sparc32 και sparc64.
- Νέα εντολή GDB / CLI για τη διαγραφή μνήμης flash
- Εγγραφή / επανάληψη υποστήριξης εντολών rdrand και rdrand
- Η υποστήριξη για τις ακόλουθες λειτουργίες έχει καταργηθεί:
- Υποστήριξη προγραμμάτων Java που έχουν δημιουργηθεί με gcj
- Υποστήριξη για τις ακόλουθες διαμορφώσεις:
- FreeBSD / άλφα (άλφα * - * - freebsd *)
- GNU / kFreeBSD / άλφα (άλφα * - * - kfreebsd * -gnu)
Τι νέο υπάρχει στην έκδοση 7.9.1:
- PR build / 18033 gdb / iq2000-tdep.c και gdb / compile / compile - *. γ)
- PR build / 18298 (η εντολή "compile" δεν μπορεί να βρει μεταγλωττιστή αν τα εργαλεία έχουν ρυθμιστεί με τριπλή αντί για τετραπλή)
- PR tui / 18311 (Τυχαία SEGV κατά την εμφάνιση καταχωρητών σε λειτουργία TUI)
- PR python / 18299 (εξαίρεση κατά την εγγραφή ενός παγκόσμιου όμορφο εκτυπωτή σε λεπτομερή κατάσταση)
- PR python / 18066 (το όρισμα "λέξη" φαίνεται σπασμένο στο Command.complete (κείμενο, λέξη))
- PR pascal / 17815 (Διόρθωση συμπεριφοράς παλμών για πεδία κλάσης με δοκιμαστική δοκιμή)
- PR python / 18285 (ptype expr-with-xmethod προκαλεί SEGV)
Τι νέο υπάρχει στην έκδοση 7.9:
- Αλλαγές δέσμης ενεργειών Python.
- Σύνταξη πηγαίου κώδικα και έγχυση στο κατώτερο.
- Νέες εντολές, επιλογές, ευκολίες / επιλογές.
- Υποστήριξη MIPS SDE (mips * -sde * -elf *).
- Καλύτερος χειρισμός σημάτων κατά την αποσφαλμάτωση προγραμμάτων με σπείρωμα.
Τι είναι καινούργιο στην έκδοση 7.8.2: PR symtab / 17642 -error: resolve_dynamic_struct: Ο ισχυρισμός 'TYPE_NFIELDS (type) & gt; 0' απέτυχε.)
Τι νέο υπάρχει στην έκδοση 7.8.1:
- PR python / 17364 (Χρειάζεστε καλύτερα ονόματα εκτυπωτών στη διεύθυνση bound_registers.py)
- Δημιουργία PR / 17104 (CFLAGS = "-Wall -Wextra" gdb / confgure -with-babeltrace αποτυγχάνει)
- PR gdb / 17345 (babeltrace (1.1.2 και μεταγενέστερη) διαμαρτύρεται για τα δεδομένα ctf που δημιουργούνται από το GDB)
- Δημιουργία PR / 17298 (gcore: Δεν ήταν δυνατή η λήψη αρχείων: Καμία τέτοια διαδικασία)
- PR python / 17342 (Το Xmethod Python δεν είναι συμβατό με Python 3)
- PR python / 17355 (Σύμπτυξη σε φίλτρα πλαισίου Python με μη αναγνώσιμο arg)
- PR guile / 17367 (ο υπολογισμός της διαδρομής του guild είναι λάθος όταν το script pkg-config παρέχεται ως arg to --with-guile)
- PR gdb / 17247 (το gdb παγώνει σε εφαρμογή με πολλαπλές σπείρες)
- PR gdb / 17347 (Παλινδρόμηση: Το GDB σταμάτησε κατά την εκτέλεση με προσαρτημένη διαδικασία)
- PR gdb / 17407 (Ανίχνευση regression για Linux vDSO)
- διακομιστής PR / 17457 (aarch64 / gdbserver: εμφάνιση μη έγκυρων καταχωρητών κινητής υποδιαστολής)
- διακομιστής PR / 17487 (state- & gt; dr_control_mirror == 0 απέτυχε να ισχυριστεί στο gdbserver στα Windows)
- PR gdb / 17472 (με σχολιασμούς, είσοδος κατά την εκτέλεση στο προσκήνιο συντρίβεται readline / gdb)
- PR gdb / 17471 (η επανάληψη μιας εντολής παρασκηνίου κάνει το προσκήνιο)
- PR cli / 17300 (συντριβή σε λειτουργία χωρίς διακοπή με συνέχεια -a & (readline_callback_read_char () που καλείται χωρίς χειριστή!))
- PR python / 17372 (το python κρέμεται όταν εμφανίζεται η βοήθεια ())
- PR python / 17408 (../../gdb/infrun.c:5256: εσωτερικός σφάλμα: switch_back_to_stepped_thread: Ο ισχυρισμός `! schedlock_applies (1) 'απέτυχε.)
Τι είναι καινούργιο στην έκδοση 7.8:
Τι νέο υπάρχει στην έκδοση 7.7:
- Ενισχυμένη υποστήριξη δέσμης ενεργειών Python.
- Μερικές βελτιώσεις του C ++.
- Νέες εντολές, επιλογές, ευκολίες / επιλογές.
- Διάφορες νέες εντολές και βελτιώσεις GDB / MI.
- Εξαρτήματα απομακρυσμένου πρωτοκόλλου και GDBserver.
- Νέες διαμορφώσεις στόχων (Nios II, TI MSP430).
- GDB Windows x64 για την ενίσχυση της υποστήριξης δεδομένων.
- Το SystemTap υποστηρίζει τους ανιχνευτές SDT στο AArch64 GNU / Linux.
- Υποστήριξη CTF (Common Trace Format).
- Νέα γραφήματα gcore και gdb-add-index.sh.
- Βελτιωμένη υποστήριξη βραχίονα * -linux / επανάληψη αναπαραγωγής.
- Αφαιρέθηκε η υποστήριξη για παρωχημένες διαμορφώσεις NetBSD και OpenBSD. Οι παραλλαγές ELF αυτών των διαμορφώσεων διατηρούνται υποστηριζόμενες.
- Το "set | show remotebaud" οι εντολές έχουν καταργηθεί υπέρ του "show show serial baud".
Τι νέο υπάρχει στην έκδοση 7.6.2:
- PR breakpoint / 16251 πιρούνι)
- PR gdb / 16303 (το GDB 7.6.1 δεν λειτουργεί με binutils 2.24 για MIPS16 και microMIPS)
Τι νέο υπάρχει στην έκδοση 7.6.1:
- PR tdep / 15420 (Δεν μπορείτε να εντοπίσετε σφάλματα στα προγράμματα με σπείρωμα σε νεότερες εκδόσεις του x86-solaris - Solaris 10,
- PR απομακρυσμένο / 15455 (απομακρυσμένο πακέτο QTro σπασμένο)
- Δημιουργία PR / 15476 (Κατασκευή αποτυχίας λόγω ανεπαρκούς τύπου enum στο utils.h)
- διακομιστής PR / 15594 (η υποστήριξη tls στο 64x32 x86 gdbserver δεν επεκτείνει τη διεύθυνση σε 64 bit)
- διακομιστής PR / 15075 (το dprintf αλληλεπιδρά με το "επόμενο")
- διακομιστής PR / 15434 (το dprintf χρησιμοποιεί μια σύγχρονη 'συνέχεια' ακόμα και σε λειτουργία χωρίς διακοπή)
- PR tui / 14880 (σε διανυσματικές καταγραφές μητρώου, τα αποτελέσματα έχουν ως αποτέλεσμα την αποτυχία της διαπίστωσης στην αξία.c)
- PR c ++ / 15519 (το GDB 7.6 είναι 94x πιο αργό από το GDB 7.5.1 χρησιμοποιώντας ένα συγκεκριμένο αρχείο πυρήνα)
- PR gdb / 15837 (η GDB εκτυπώνει τιμές εισαγωγής για τοπικές μεταβλητές)
- PR gdb / 15415 (το gdb επιλύει συμβολικούς συνδέσμους όταν διέρχεται argv [0])
- PR cli / 15603 (η CTRL-C δεν μπορεί πλέον να διακόπτει κατώτερη)
- PR gdb / 15604 (κατακρήμνιση διαρροής υποδοχής gdbserver 7,5)
Τι νέο υπάρχει στην έκδοση 7.5:
- Γλωσσική υποστήριξη.
- Νέοι στόχοι (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Περισσότερες βελτιώσεις δέσμης ενεργειών Python.
- Οι ανιχνευτές SDT (Static Defined Tracking) υποστηρίζουν τους αισθητήρες SystemTap.
- Βελτιώσεις στο GDBserver (συνδέσεις stdio, αξιολόγηση στόχων από την πλευρά του στόχου, βελτιώσεις απομακρυσμένου πρωτοκόλλου).
- Άλλες βελτιώσεις (δυνατότητα τερματισμού κατά την φόρτωση / εκφόρτωση μιας κοινόχρηστης βιβλιοθήκης, της δυναμικής εκτύπωσης κ.λπ.).
- Αντίστροφη αποσφαλμάτωση στο ARM.
- Το δυαδικό "gdbtui" έχει εγκαταλειφθεί και δεν μπορεί πλέον να οικοδομηθεί. Χρησιμοποιήστε το "gdb-tui" αντί.
Τι νέο υπάρχει στην έκδοση 7.4:
- Οι λειτουργίες και τα αρχεία που δεν ενδιαφέρουν μπορούν πλέον να παραβλεφθούν όταν προχωρήσουμε με τη λειτουργία "παράκαμψης" και "παράβλεψη αρχείου" εντολές.
- Προστέθηκαν εντολές για τη ρύθμιση και τη λήψη του μέγιστου ορίου μήκους ενός απομακρυσμένου σημείου παρακολούθησης υλικού στόχου.
- Η δέσμη ενεργειών της Python βελτιώθηκε σημαντικά.
- Πολλές άλλες βελτιώσεις, διορθώσεις σφαλμάτων και γενικές αλλαγές έγιναν.
Τι νέο υπάρχει στην έκδοση 7.1:
- Υποστήριξη νέων στόχων (συμπεριλαμβανομένου προσομοιωτή):
- Xilinx MicroBlaze
- Renesas RX
- Τα σημαντικότερα νέα χαρακτηριστικά είναι:
- Σφάλμα πολλαπλών προγραμμάτων, επιτρέποντας στο πρόγραμμα εντοπισμού σφαλμάτων να ελέγχει περισσότερα από τα
- ένα πρόγραμμα εντός της ίδιας περιόδου λειτουργίας του GDB.
- Αντιμετώπιση σφαλμάτων ανεξάρτητης εκτελέσιμης εκτέλεσης (PIE).
- Διαθέτει επίσης πολλές βελτιώσεις και διορθώσεις σφαλμάτων, όπως:
- Η υποστήριξη Python έχει επεκταθεί.
- Βελτιώσεις υποστήριξης C ++ (χώρος ονομάτων, χειριστές καναλιών, διορθώσεις σφαλμάτων)
- Βελτιώσεις υποστήριξης Tracepoint.
- Διαδικασίες βελτίωσης εγγραφών (αποθήκευση / αποκατάσταση αρχείου καταγραφής εκτέλεσης, υλικού )
- υποστήριξη υποστήριξης ρολογιών).
- Αξεσουάρ απομακρυσμένου πρωτοκόλλου (σφάλμα του πυρήνα του Linux, νέα πακέτα )
- για υποστήριξη tracepoint)
Τα σχόλια δεν βρέθηκε