Ako nainštalovať GDB na CentOS 6

GDB je debugger pre C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada a Modula-2.

CentOS je založený na RHEL (Red Hat Enterprise Linux). Jedným z hlavných cieľov RHEL je byť stabilným serverovým operačným systémom, čo znamená, že novšie verzie softvérových balíkov nie sú vždy dostupné.

V čase písania tohto článku ponúka CentOS 6 GDB v7.2. Tím GDB však nedávno vydal kód pre verziu 7.91.

Oficiálne sa odporúča spustiť inú linuxovú distribúciu, aby ste mohli používať novšiu verziu GDB. Toto nie je vždy ideálne. Našťastie je možné nainštalovať novšie verzie GDB na CentOS 6. Keďže GDB je skôr ladiacim nástrojom než základným komponentom systému, môžete celkom bezpečne použiť novšiu verziu.

Tento článok vysvetľuje, ako nainštalovať podporované aj nepodporované verzie GDB na CentOS 6.

Vysvetlím tiež, ako nastaviť GDB, aby vám poskytla ľahšie čitateľné informácie o ladení pri používaní štandardnej knižnice C++ (ako reťazec) a štandardnej knižnice šablón (ako vektor). Táto funkcia sa nazýva pekná tlač.

Prihláste sa do svojho VPS a nastavte si používateľský účet

  1. Prihláste sa do svojho VPS. Môžete to urobiť kliknutím na „Zobraziť konzolu“ v ovládacom paneli Vultr alebo pomocou klienta SSH.

    (a) Prihláste sa ako root.

    (b) Vytvorte si vlastný používateľský účet. Nastavte heslo.

    adduser <username>
    passwd <username>
    

    (c) Poskytnite používateľovi sudo prístup.

    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) Odhláste sa ako root a potom sa znova prihláste pomocou svojho používateľského účtu. Je oveľa bezpečnejšie sa v skutočnosti nikdy neprihlásiť ako root. Použitie sudo je lepší postup.

Ak si chcete nainštalovať oficiálne podporovanú (staršiu) verziu GDB

  1. Nainštalujte GDB.

    sudo yum install gdb
    
  2. Skontrolujte nainštalovanú verziu a pozrite si jej umiestnenie.

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

Ak chcete nainštalovať novšiu verziu GDB zo zdroja

  1. Nainštalujte kompilátor jazyka C, napríklad GCC. Kompilátor C++ nie je potrebný na zostavenie GDB zo zdroja, ale je potrebný na demonštráciu peknej funkcie tlače GDB. Najnovšiu verziu GCC si môžete zostaviť zo zdroja vykonaním krokov v článku Ako nainštalovať GCC na CentOS 6 . Alebo si môžete nainštalovať CentOS 6 oficiálne podporovanú verziu GCC spustením:

    sudo yum install gcc gcc-c++
    
  2. Nainštalujte ďalšie potrebné balíky.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Rozhodnite sa, ktorú verziu GDB chcete zostaviť zo zdroja. Navštívte stránku FTP GDB a pozrite si verzie, ktoré sú k dispozícii na stiahnutie.

  4. Získajte zdroj verzie GDB, ktorú chcete. Zvyšok tohto článku je napísaný pre verziu 7.9.1 a stiahne zdroje do ~/sourceInstallations/gdb-7.9.1/– budete musieť nahradiť správne číslo verzie za novšie verzie.

    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. Vybudujte GDB. Ak sa to dokončí správne, posledný riadok, ktorý uvidíte, bude znamenať „úspech“. Je normálne, že niektoré chybne vyzerajúce správy sa rýchlo posúvajú. Tieto je bezpečné ignorovať.

    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. Nainštalujte C++ peknú tlač.

    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. Skontrolujte nainštalovanú verziu a jej umiestnenie.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Voliteľne spustite GDB a uvidíte peknú tlač.

    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. Voliteľne získajte miesto na pevnom disku. Váš ~/sourceInstallationsadresár bude zaberať približne 386 MB. Pravdepodobne je múdre ponechať si adresáre, pretože existujú voliteľné možnosti konfigurácie, ktoré možno budete musieť niekedy v budúcnosti použiť, a bolo by rýchlejšie mať veľa hotových. Proces zostavovania tiež vytvára protokoly, ktoré môžete neskôr skontrolovať a pracovať z nich, ak sa niečo pokazí. Ale po spustení sudo make installskôr vaša nainštalovaná GDB nezávisí na ničom v tomto adresári a priestor môže byť drahý, takže môžete urobiť tento krok a získať späť približne 386 MB. DÔLEŽITÉ: nemažte ~/gdb_printers/adresár! Obsah tohto adresára sa načíta pri každom spustení GDB. NEBOLI skompilované do samotnej GDB.

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

Zanechať komentár

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umelá inteligencia nie je v budúcnosti, je tu priamo v súčasnosti V tomto blogu si prečítajte, ako aplikácie umelej inteligencie ovplyvnili rôzne sektory.

Útoky DDOS: Stručný prehľad

Útoky DDOS: Stručný prehľad

Ste aj vy obeťou DDOS útokov a máte zmätok ohľadom metód prevencie? Ak chcete vyriešiť svoje otázky, prečítajte si tento článok.

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Možno ste už počuli, že hackeri zarábajú veľa peňazí, ale premýšľali ste niekedy nad tým, ako môžu zarábať také peniaze? poďme diskutovať.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Chcete vidieť revolučné vynálezy od Google a ako tieto vynálezy zmenili život každého dnešného človeka? Potom si prečítajte na blogu a pozrite si vynálezy spoločnosti Google.

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Koncept samoriadených áut vyraziť na cesty s pomocou umelej inteligencie je snom, ktorý máme už nejaký čas. Ale napriek niekoľkým prísľubom ich nikde nevidno. Prečítajte si tento blog a dozviete sa viac…

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Ako sa veda vyvíja rýchlym tempom a preberá veľa nášho úsilia, zvyšuje sa aj riziko, že sa vystavíme nevysvetliteľnej singularite. Prečítajte si, čo pre nás môže znamenať singularita.

Funkcionality vrstiev referenčnej architektúry veľkých dát

Funkcionality vrstiev referenčnej architektúry veľkých dát

Prečítajte si blog, aby ste čo najjednoduchším spôsobom spoznali rôzne vrstvy architektúry veľkých dát a ich funkcie.

Vývoj ukladania dát – Infografika

Vývoj ukladania dát – Infografika

Spôsoby ukladania údajov sa môžu vyvíjať už od zrodu údajov. Tento blog sa zaoberá vývojom ukladania údajov na základe infografiky.

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

V tomto digitálnom svete sa inteligentné domáce zariadenia stali kľúčovou súčasťou života. Tu je niekoľko úžasných výhod inteligentných domácich zariadení o tom, ako robia náš život, ktorý stojí za to žiť, a ktorý zjednodušujú.

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Spoločnosť Apple nedávno vydala doplnkovú aktualizáciu macOS Catalina 10.15.4 na opravu problémov, ale zdá sa, že táto aktualizácia spôsobuje ďalšie problémy, ktoré vedú k blokovaniu počítačov Mac. Prečítajte si tento článok a dozviete sa viac