Πώς να εγκαταστήσετε το GDB στο CentOS 6

Το GDB είναι ένας εντοπισμός σφαλμάτων για C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada και Modula-2.

Το CentOS βασίζεται στο RHEL (Red Hat Enterprise Linux). Ένας από τους κύριους στόχους της RHEL είναι να είναι ένα σταθερό λειτουργικό σύστημα διακομιστή, πράγμα που σημαίνει ότι οι νεότερες εκδόσεις πακέτων λογισμικού δεν είναι πάντα διαθέσιμες.

Κατά τη στιγμή της γραφής, το CentOS 6 προσφέρει GDB v7.2. Ωστόσο, η ομάδα GDB κυκλοφόρησε πρόσφατα τον κωδικό για την έκδοση 7.91.

Προτείνεται επίσημα η εκτέλεση μιας διαφορετικής διανομής Linux προκειμένου να χρησιμοποιηθεί μια νεότερη έκδοση του GDB. Αυτό δεν είναι πάντα ιδανικό. Ευτυχώς, είναι δυνατό να εγκαταστήσετε τις νεότερες εκδόσεις του GDB στο CentOS 6. Εφόσον το GDB είναι ένας εντοπισμός σφαλμάτων και όχι ένα βασικό στοιχείο συστήματος, μπορείτε να χρησιμοποιήσετε μια νεότερη έκδοση.

Αυτό το άρθρο εξηγεί πώς να εγκαταστήσετε τόσο τις υποστηριζόμενες όσο και τις μη υποστηριζόμενες εκδόσεις του GDB στο CentOS 6.

Θα εξηγήσω επίσης πώς να ρυθμίσετε το GDB για να σας δώσω πιο ευανάγνωστες πληροφορίες εντοπισμού σφαλμάτων όταν χρησιμοποιείτε την Τυπική βιβλιοθήκη C++ (όπως συμβολοσειρά) και την Τυπική βιβλιοθήκη προτύπων (όπως διάνυσμα). Αυτή η δυνατότητα ονομάζεται όμορφη εκτύπωση.

Συνδεθείτε στο VPS σας και ρυθμίστε τον λογαριασμό χρήστη σας

  1. Συνδεθείτε στο VPS σας. Αυτό μπορεί να γίνει κάνοντας κλικ στην "Προβολή κονσόλας" στον πίνακα ελέγχου Vultr ή με έναν πελάτη SSH.

    (α) Είσοδος ως root.

    (β) Δημιουργήστε τον δικό σας λογαριασμό χρήστη. Ορίστε τον κωδικό πρόσβασης.

    adduser <username>
    passwd <username>
    

    (γ) Παραχωρήστε στον χρήστη πρόσβαση sudo.

    visudo
        After the line "root   ALL=(ALL)   ALL"
        Add the line "<username>   ALL=(ALL)   ALL"
        --- If you aren't familiar with vi, go to the line "root   ALL=(ALL)   ALL".
        ---   Hit "o" to create a new line after that line and enter insert mode.
        ---   Type "<username>   ALL=(ALL)   ALL".
        ---   Hit ESC.
        ---   Type "ZZ" to save.
    

    (δ) Αποσυνδεθείτε ως root και, στη συνέχεια, συνδεθείτε ξανά με τον λογαριασμό χρήστη σας. Είναι πολύ πιο ασφαλές να μην συνδέεστε ποτέ πραγματικά ως root. Η χρήση του sudo είναι καλύτερη πρακτική.

Εάν θέλετε να εγκαταστήσετε την επίσημα υποστηριζόμενη (παλαιότερη) έκδοση του GDB

  1. Εγκαταστήστε το GDB.

    sudo yum install gdb
    
  2. Ελέγξτε την εγκατεστημένη έκδοση και δείτε τη θέση της.

    gdb --version
        May say: GNU gdb (GDB) Red Hat Enterprise Linux (7.2-75.el6)
    which gdb
        /usr/bin/gdb
    

Εάν θέλετε να εγκαταστήσετε μια νεότερη έκδοση του GDB από την πηγή

  1. Εγκαταστήστε έναν μεταγλωττιστή C, όπως το GCC. Ένας μεταγλωττιστής C++ δεν χρειάζεται για τη δημιουργία του GDB από την πηγή, αλλά χρειάζεται για να επιδείξει την όμορφη δυνατότητα εκτύπωσης του GDB. Μπορείτε να δημιουργήσετε μια πιο πρόσφατη έκδοση του GCC από την πηγή εκτελώντας τα βήματα στο άρθρο Πώς να εγκαταστήσετε το GCC στο CentOS 6 . Εναλλακτικά, μπορείτε να εγκαταστήσετε την επίσημα υποστηριζόμενη έκδοση του GCC με το CentOS 6 εκτελώντας:

    sudo yum install gcc gcc-c++
    
  2. Εγκαταστήστε επιπλέον απαιτούμενα πακέτα.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Αποφασίστε ποια έκδοση του GDB θέλετε να δημιουργήσετε από την πηγή. Επισκεφτείτε την τοποθεσία GDB FTP για να δείτε τις εκδόσεις που είναι διαθέσιμες για λήψη.

  4. Λάβετε την πηγή της έκδοσης του GDB που θέλετε. Το υπόλοιπο αυτού του άρθρου είναι γραμμένο για την έκδοση 7.9.1 και θα πραγματοποιήσει λήψη των πηγών ~/sourceInstallations/gdb-7.9.1/- θα πρέπει να αντικαταστήσετε τον σωστό αριθμό έκδοσης με νεότερες εκδόσεις.

    mkdir ~/sourceInstallations
    cd ~/sourceInstallations
    wget ftp://ftp.gnu.org/gnu/gdb/gdb-7.9.1.tar.gz .
    tar -zxvf gdb-7.9.1.tar.gz
    
  5. Δημιουργία GDB. Εάν αυτό ολοκληρωθεί σωστά, η τελευταία γραμμή που θα δείτε θα λέει "επιτυχία". Είναι φυσιολογικό να βλέπετε ορισμένα μηνύματα που δείχνουν σφάλμα να μετακινούνται γρήγορα. Αυτά είναι ασφαλή να τα αγνοήσετε.

    mkdir gdb-7.9.1.build
    cd gdb-7.9.1.build
    ../gdb-7.9.1/configure --with-python=yes && make && sudo make install && echo success
        --- If your VPS has multiple cores, you can speed up the build by changing the middle part
        ---  of this line from "&& make &&" to "&& make -j <number of cores> &&".
        --- You can see the number of cores your VPS has by running "nproc"
        --- The parameter "--with-python=yes" is necessary for the pretty printing feature
    
  6. Εγκαταστήστε την όμορφη εκτύπωση C++.

    cd ~/
    svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python gdb_printers
    Create a file ~/.gdbinit of:
        python
        import sys
        sys.path.insert(0, '/home/<yourUserName>/gdb_printers/')
        from libstdcxx.v6.printers import register_libstdcxx_printers
        end
    --- One way to create this file is to run "vi ~/.gdbinit", hitting "i" to enter insert mode,
    ---  typing the above file, hitting ESC, and hitting "ZZ" to save.
    
  7. Ελέγξτε την εγκατεστημένη έκδοση και τη θέση της.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Προαιρετικά εκτελέστε το GDB και δείτε όμορφη εκτύπωση.

    mkdir ~/gdbExample
    cd ~/gdbExample
    Create a file gdbExample.cpp of:
        #include <string>
        #include <vector>
        using namespace std;
    
        int main() {
           string foo = "bar";
           vector<string> vec;
           vec.push_back("foo");
           vec.push_back("bar");
           vec.push_back("foobar");
        }
    --- One way to create this file is to run "vi gdbExample.cpp", hitting "i" to enter insert mode,
    ---  typing the above file, hitting ESC, and hitting "ZZ" to save.
    g++ -ggdb gdbExample.cpp -o gdbExample
    Start GDB traditionally, by running "gdb ./gdbExample".  Or, start GDB by using its terminal user interface (basically a text mode GUI), by running "gdb --tui ./gdbExample".
    Enter "break main" to set a breakpoint at the beginning of function main() -- and it will say:
        Breakpoint 1 at 0x<someAddress>: file gdbExample.cpp, line 6.
    Enter "run" to start the program, which will immediately hit the breakpoint you just set -- and it will say:
        Starting program: /home/<yourUserName>/gdbExample/gdbExample
    
        Breakpoint 1, main () at gdbExample.cpp:6
        6          string foo = "bar";
    Enter "next" and hit enter four times, and gdb will move up to just before executing:
        10         vec.push_back("foobar"); 
    Enter "print foo" and gdb will show:
        $1 = "bar"
    Enter "print vec" and gdb will show:
        $2 = std::vector of length 2, capacity 2 = {"foo", "bar"}
        --- Remember, line 10 hasn't executed yet to add "foobar" to the vector
    Enter "quit" and "y" to quit anyway.
    
  9. Προαιρετικά ανακτήστε χώρο στον σκληρό δίσκο. Ο ~/sourceInstallationsκατάλογός σας θα καταλαμβάνει περίπου 386 MB. Είναι πιθανώς συνετό να διατηρήσετε τους καταλόγους, καθώς υπάρχουν προαιρετικές επιλογές διαμόρφωσης που μπορεί να χρειαστεί να χρησιμοποιήσετε κάποια στιγμή στο μέλλον και θα ήταν πιο γρήγορο να έχετε ήδη κάνει πολλά. Επίσης, η διαδικασία κατασκευής δημιουργεί αρχεία καταγραφής που μπορείτε αργότερα να ελέγξετε και να εργαστείτε εάν κάτι πάει στραβά. Ωστόσο, μετά την εκτέλεση sudo make installνωρίτερα, το εγκατεστημένο GDB σας δεν εξαρτάται από τίποτα σε αυτόν τον κατάλογο και ο χώρος μπορεί να είναι υψηλότερος, επομένως μπορείτε να κάνετε αυτό το βήμα και να ανακτήσετε τα 386 MB περίπου. ΣΗΜΑΝΤΙΚΟ: μην διαγράψετε τον ~/gdb_printers/κατάλογο! Τα περιεχόμενα αυτού του καταλόγου φορτώνονται κάθε φορά που εκτελείτε το GDB. ΔΕΝ συγκεντρώθηκαν στο ίδιο το GDB.

    cd ~/
    rm -rf sourceInstallations
    --- Again, if you can spare the space, you may someday be happy to have left it there.
    

Αφήστε ένα σχόλιο

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

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

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

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

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα