Kaip įdiegti GDB CentOS 6

GDB yra C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada ir Modula-2 derinimo priemonė.

CentOS yra pagrįsta RHEL („Red Hat Enterprise Linux“). Vienas iš pagrindinių RHEL tikslų – būti stabilia serverio operacine sistema, o tai reiškia, kad naujesnės programinės įrangos paketų versijos ne visada pasiekiamos.

Rašymo metu CentOS 6 siūlo GDB v7.2. Tačiau GDB komanda neseniai išleido kodą v7.91.

Oficialiai siūloma paleisti kitą Linux distro, kad būtų galima naudoti naujesnę GDB versiją. Tai ne visada idealu. Laimei, CentOS 6 galima įdiegti naujesnes GDB versijas. Kadangi GDB yra derinimo priemonė, o ne pagrindinis sistemos komponentas, galite naudoti naujesnę versiją.

Šiame straipsnyje paaiškinama, kaip CentOS 6 įdiegti palaikomas ir nepalaikomas GDB versijas.

Taip pat paaiškinsiu, kaip nustatyti GDB, kad suteiktumėte lengviau skaitomą derinimo informaciją, kai naudojate C++ standartinę biblioteką (pvz., eilutę) ir standartinę šablonų biblioteką (pvz., vektorių). Ši funkcija vadinama gražiu spausdinimu.

Prisijunkite prie savo VPS ir susikurkite vartotojo paskyrą

  1. Prisijunkite prie savo VPS. Tai galima padaryti spustelėjus „View Console“ „Vultr“ valdymo skydelyje arba naudojant SSH klientą.

    a) Prisijunkite kaip root.

    (b) Sukurkite savo vartotojo paskyrą. Nustatykite slaptažodį.

    adduser <username>
    passwd <username>
    

    (c) Suteikite vartotojui sudo prieigą.

    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) Atsijunkite kaip root, tada vėl prisijunkite naudodami savo vartotojo paskyrą. Daug saugiau niekada neprisijungti kaip root. Sudo naudojimas yra geresnė praktika.

Jei norite įdiegti oficialiai palaikomą (senesnę) GDB versiją

  1. Įdiekite GDB.

    sudo yum install gdb
    
  2. Patikrinkite įdiegtą versiją ir jos vietą.

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

Jei norite įdiegti naujesnę GDB versiją iš šaltinio

  1. Įdiekite C kompiliatorių, pvz., GCC. C++ kompiliatorius nereikalingas norint sukurti GDB iš šaltinio, tačiau jis reikalingas norint parodyti gražią GDB spausdinimo funkciją. Galite sukurti naujesnę GCC versiją iš šaltinio, atlikdami straipsnyje Kaip įdiegti GCC CentOS 6 nurodytus veiksmus . Arba galite įdiegti CentOS 6 oficialiai palaikomą GCC versiją paleisdami:

    sudo yum install gcc gcc-c++
    
  2. Įdiekite papildomai reikalingus paketus.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Nuspręskite, kurią GDB versiją norite sukurti iš šaltinio. Apsilankykite GDB FTP svetainėje, kad pamatytumėte versijas, kurias galima atsisiųsti.

  4. Gaukite norimos GDB versijos šaltinį. Likusi šio straipsnio dalis skirta 7.9.1 versijos versijai, o šaltiniai bus atsisiunčiami į jį ~/sourceInstallations/gdb-7.9.1/– naujesnėmis versijomis turėsite pakeisti tinkamą versijos numerį.

    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. Sukurkite GDB. Jei tai bus atlikta teisingai, paskutinėje eilutėje, kurią pamatysite, bus nurodyta „sėkmė“. Normalu, kad kai kurie klaidos pranešimai greitai slenka. Tai saugu ignoruoti.

    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. Įdiekite C++ pretty printing.

    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. Patikrinkite įdiegtą versiją ir jos vietą.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Pasirinktinai paleiskite GDB ir pamatysite gražų spausdinimą.

    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. Pasirinktinai atlaisvinkite vietos standžiajame diske. Jūsų ~/sourceInstallationskatalogas užims apie 386 MB. Tikriausiai būtų protinga išsaugoti katalogus, nes yra pasirenkamų konfigūravimo parinkčių, kurias gali tekti naudoti kada nors ateityje, ir būtų greičiau, jei daug ką jau padarytumėte. Be to, kūrimo procesas sukuria žurnalus, kuriuos vėliau galėsite patikrinti ir dirbti, jei kas nors negerai. Tačiau paleidus sudo make installanksčiau, jūsų įdiegtas GDB nepriklauso nuo nieko šiame kataloge, o vietos gali būti labai daug, todėl galite atlikti šį veiksmą ir susigrąžinti maždaug 386 MB. SVARBU: neištrinkite ~/gdb_printers/katalogo! Šio katalogo turinys įkeliamas kiekvieną kartą paleidus GDB. Jie NĖRA sukompiliuoti į patį GDB.

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

Palikti komentarą

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį