Cum se instalează GDB pe CentOS 6

GDB este un depanator pentru C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada și Modula-2.

CentOS se bazează pe RHEL (Red Hat Enterprise Linux). Unul dintre obiectivele principale ale RHEL este să fie un sistem de operare stabil pentru server, ceea ce înseamnă că versiunile mai noi de pachete software nu sunt întotdeauna disponibile.

În momentul scrierii, CentOS 6 oferă GDB v7.2. Echipa GDB, cu toate acestea, a lansat recent codul pentru v7.91.

Se recomandă oficial să rulați o distro Linux diferită pentru a utiliza o versiune mai nouă de GDB. Acest lucru nu este întotdeauna ideal. Din fericire, este posibil să instalați versiunile mai noi de GDB pe CentOS 6. Deoarece GDB este mai degrabă un debugger decât o componentă principală a sistemului, sunteți destul de sigur să utilizați o versiune mai nouă.

Acest articol explică modul de instalare a versiunilor GDB acceptate și neacceptate pe CentOS 6.

Vă voi explica, de asemenea, cum să configurați GDB pentru a vă oferi informații de depanare mai ușor de citit atunci când utilizați Biblioteca Standard C ++ (ca șirul) și Biblioteca cu șabloane standard (precum vectorul). Această caracteristică se numește destul de tipărire.

Conectați-vă la VPS și configurați-vă contul de utilizator

  1. Conectați-vă la VPS. Acest lucru se poate face făcând clic pe „View Console” în panoul de control Vultr sau cu un client SSH.

    (a) Conectați-vă ca root.

    (b) Creează-ți propriul cont de utilizator. Setați parola.

    adduser <username>
    passwd <username>
    

    (c) Acordarea accesului sudo utilizatorului.

    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.
    

    (d) Deconectați-vă ca root, apoi conectați-vă cu contul de utilizator. Este mult mai sigur să nu te autentifici niciodată ca root. Utilizarea sudo este o practică mai bună.

Dacă doriți să instalați versiunea GDB acceptată oficial (mai veche)

  1. Instalați GDB.

    sudo yum install gdb
    
  2. Verificați versiunea instalată și vedeți locația acesteia.

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

Dacă doriți să instalați o versiune mai nouă a GDB de la sursă

  1. Instalați un compilator C, cum ar fi GCC. Un compilator C ++ nu este necesar pentru a construi GDB din sursă, ci este necesar pentru a demonstra caracteristica de imprimare destul de bună a GDB. Puteți construi o versiune mai recentă a GCC de la sursă, executând pașii din articolul Cum se instalează GCC pe CentOS 6 . Sau puteți instala CentOS 6 versiunea GCC acceptată oficial rulând:

    sudo yum install gcc gcc-c++
    
  2. Instalați pachetele necesare în plus.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Decideți ce versiune a GDB pe care doriți să o construiți din sursă. Accesați site-ul FTP GDB pentru a vedea versiunile disponibile pentru descărcare.

  4. Obțineți sursa versiunii GDB pe care o doriți. Restul acestui articol este scris pentru v7.9.1 și va descărca sursele în ~/sourceInstallations/gdb-7.9.1/- va trebui să înlocuiți numărul de versiune corespunzător cu versiuni mai noi.

    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. Construiți GDB. Dacă acest lucru se completează corect, ultima linie pe care o veți vedea va spune „succes”. Este normal să vezi unele mesaje cu aspect de eroare defilând rapid. Acestea sunt sigure de ignorat.

    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. Instalați imprimare destul de 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. Verificați versiunea instalată și locația acesteia.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Opțional rulați GDB și vedeți tipărirea destul de bună.

    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. Opțional, revendicați spațiul pe hard disk. ~/sourceInstallationsDirectorul dvs. va prelua aproximativ 386 MB. Este probabil înțelept să păstrați directoarele, deoarece există opțiuni de configurare opționale pe care poate fi necesar să le utilizați la un moment dat în viitor, și ar fi mai rapid să aveți multe deja făcute. De asemenea, procesul de construire face jurnalele pe care le puteți verifica și lucra mai târziu dacă ceva nu merge bine. Dar, după ce a rulat sudo make installmai devreme, GDB-ul dvs. instalat nu depinde de nimic din acest director, iar spațiul poate fi la un nivel premium, astfel încât să puteți face acest pas și să revendicați 386MB sau cam așa ceva. IMPORTANT: nu ștergeți ~/gdb_printers/directorul! Conținutul acestui director este încărcat de fiecare dată când executați GDB. NU au fost compilate în GDB în sine.

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


Leave a Comment

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe