Kako instalirati GDB na CentOS 6

GDB je program za ispravljanje pogrešaka za C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada i Modula-2.

CentOS se temelji na RHEL-u (Red Hat Enterprise Linux). Jedan od glavnih ciljeva RHEL-a je biti stabilan poslužiteljski operativni sustav, što znači da novije verzije softverskih paketa nisu uvijek dostupne.

U trenutku pisanja, CentOS 6 nudi GDB v7.2. Međutim, GDB tim je nedavno objavio kod za v7.91.

Službeno se predlaže da se pokrene drugačija distribucija Linuxa kako bi se koristila novija verzija GDB-a. Ovo nije uvijek idealno. Na sreću, moguće je instalirati novije verzije GDB-a na CentOS 6. Budući da je GDB program za ispravljanje pogrešaka, a ne jezgra sustava, prilično je sigurno koristiti noviju verziju.

Ovaj članak objašnjava kako instalirati podržane i nepodržane verzije GDB-a na CentOS 6.

Također ću objasniti kako postaviti GDB kako bi vam pružio lakše čitljive informacije o otklanjanju pogrešaka kada koristite C++ standardnu ​​knjižnicu (poput niza) i standardnu ​​knjižnicu predložaka (poput vektora). Ova se značajka naziva lijepi ispis.

Prijavite se na svoj VPS i postavite svoj korisnički račun

  1. Prijavite se na svoj VPS. To se može učiniti klikom na "View Console" na Vultr upravljačkoj ploči ili pomoću SSH klijenta.

    (a) Prijavite se kao root.

    (b) Izradite vlastiti korisnički račun. Postavite lozinku.

    adduser <username>
    passwd <username>
    

    (c) Omogućite korisniku sudo pristup.

    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) Odjavite se kao root, a zatim se ponovno prijavite sa svojim korisničkim računom. Mnogo je sigurnije nikada se zapravo ne prijaviti kao root. Korištenje sudo je bolja praksa.

Ako želite instalirati službeno podržanu (stariju) verziju GDB-a

  1. Instalirajte GDB.

    sudo yum install gdb
    
  2. Provjerite instaliranu verziju i pogledajte njezino mjesto.

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

Ako želite instalirati noviju verziju GDB-a iz izvora

  1. Instalirajte C prevodilac, kao što je GCC. C++ prevodilac nije potreban za izgradnju GDB-a iz izvora, ali je potreban za demonstriranje GDB-ove lijepe značajke ispisa. Možete izraditi noviju verziju GCC-a iz izvora tako da izvršite korake u članku Kako instalirati GCC na CentOS 6 . Ili možete instalirati službeno podržanu verziju GCC-a za CentOS 6 tako da pokrenete:

    sudo yum install gcc gcc-c++
    
  2. Instalirajte dodatno potrebne pakete.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Odlučite koju verziju GDB-a želite izgraditi iz izvora. Posjetite GDB FTP stranicu da vidite verzije koje su dostupne za preuzimanje.

  4. Nabavite izvor verzije GDB-a koju želite. Ostatak ovog članka napisan je za v7.9.1 i preuzima izvore u ~/sourceInstallations/gdb-7.9.1/- morat ćete zamijeniti odgovarajući broj verzije za novije verzije.

    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. Izgradite GDB. Ako se ovo završi ispravno, zadnji redak koji ćete vidjeti će pisati "uspjeh". Normalno je vidjeti neke poruke koje izgledaju kao pogreške kako se brzo pomiču. Ovo je sigurno zanemariti.

    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. Instalirajte C++ lijep ispis.

    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. Provjerite instaliranu verziju i njezino mjesto.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Po želji pokrenite GDB i vidite lijep ispis.

    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. Po želji povratite prostor na tvrdom disku. Vaš ~/sourceInstallationsće imenik zauzimati oko 386 MB. Vjerojatno je pametno zadržati direktorije, budući da postoje izborne opcije konfiguracije koje ćete možda morati koristiti u nekom trenutku u budućnosti, a bilo bi brže da već imate puno toga. Također, proces izgradnje stvara zapisnike koje kasnije možete provjeriti i raditi ako nešto pođe po zlu. Ali, nakon što se pokrene sudo make installranije, vaš instalirani GDB ne ovisi ni o čemu u ovom direktoriju, a prostor može biti premium, tako da možete učiniti ovaj korak i povratiti 386 MB ili tako nešto. VAŽNO: nemojte brisati ~/gdb_printers/imenik! Sadržaj ovog direktorija se učitava svaki put kada pokrenete GDB. NISU sastavljeni u sam GDB.

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

Ostavite komentar

Uspon strojeva: primjene AI u stvarnom svijetu

Uspon strojeva: primjene AI u stvarnom svijetu

Umjetna inteligencija nije u budućnosti, ovdje je upravo u sadašnjosti. U ovom blogu Pročitajte kako su aplikacije umjetne inteligencije utjecale na različite sektore.

DDOS napadi: kratak pregled

DDOS napadi: kratak pregled

Jeste li i vi žrtva DDOS napada i zbunjeni ste metodama prevencije? Pročitajte ovaj članak kako biste riješili svoje upite.

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Jeste li se ikada zapitali kako hakeri zarađuju novac?

Možda ste čuli da hakeri zarađuju mnogo novca, ali jeste li se ikada zapitali kako zarađuju toliki novac? raspravimo.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Revolucionarni Googleovi izumi koji će vam olakšati život.

Želite li vidjeti revolucionarne izume Googlea i kako su ti izumi promijenili život svakog čovjeka danas? Zatim čitajte na blogu kako biste vidjeli Googleove izume.

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Friday Essential: Što se dogodilo s automobilima s umjetnom inteligencijom?

Koncept samovozećih automobila koji će krenuti na ceste uz pomoć umjetne inteligencije san je koji već neko vrijeme imamo. No, unatoč nekoliko obećanja, nigdje ih nema. Pročitajte ovaj blog kako biste saznali više…

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Tehnološka singularnost: daleka budućnost ljudske civilizacije?

Kako se znanost razvija velikom brzinom, preuzimajući mnoge naše napore, raste i rizik da se podvrgnemo neobjašnjivoj Singularnosti. Pročitajte što bi za nas mogla značiti singularnost.

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Funkcionalnosti slojeva referentne arhitekture velikih podataka

Pročitajte blog kako biste na najjednostavniji način upoznali različite slojeve u arhitekturi velikih podataka i njihove funkcionalnosti.

Evolucija pohrane podataka – Infografika

Evolucija pohrane podataka – Infografika

Metode pohrane podataka su se razvijale možda od rođenja podataka. Ovaj blog pokriva evoluciju pohrane podataka na temelju infografike.

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

6 nevjerojatnih prednosti posjedovanja pametnih kućnih uređaja u našim životima

U ovom digitalnom svijetu, pametni kućni uređaji postali su ključni dio života. Evo nekoliko nevjerojatnih prednosti pametnih kućnih uređaja o tome kako naš život čine vrijednim življenja i jednostavnijim.

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Ažuriranje dodataka macOS Catalina 10.15.4 uzrokuje više problema nego što ih rješava

Nedavno je Apple izdao macOS Catalina 10.15.4 dodatak ažuriranju kako bi riješio probleme, ali čini se da ažuriranje uzrokuje više problema koji dovode do zalijevanja mac strojeva. Pročitajte ovaj članak da biste saznali više