Kā instalēt GDB operētājsistēmā CentOS 6

GDB ir C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada un Modula-2 atkļūdotājs.

CentOS pamatā ir RHEL (Red Hat Enterprise Linux). Viens no galvenajiem RHEL mērķiem ir nodrošināt stabilu servera operētājsistēmu, kas nozīmē, ka jaunākas programmatūras pakotņu versijas ne vienmēr ir pieejamas.

Rakstīšanas laikā CentOS 6 piedāvā GDB v7.2. Tomēr GDB komanda nesen izlaida kodu v7.91.

Oficiāli tiek ieteikts palaist citu Linux distribūciju, lai izmantotu jaunāku GDB versiju. Tas ne vienmēr ir ideāli. Par laimi, ir iespējams instalēt jaunākās GDB versijas operētājsistēmā CentOS 6. Tā kā GDB ir atkļūdotājs, nevis sistēmas galvenais komponents, varat droši izmantot jaunāku versiju.

Šajā rakstā ir paskaidrots, kā CentOS 6 instalēt gan atbalstītās, gan neatbalstītās GDB versijas.

Es arī paskaidrošu, kā iestatīt GDB, lai sniegtu jums vieglāk lasāmu atkļūdošanas informāciju, izmantojot C++ standarta bibliotēku (piemēram, virkni) un standarta veidņu bibliotēku (piemēram, vektoru). Šo funkciju sauc par glītu drukāšanu.

Piesakieties savā VPS un iestatiet savu lietotāja kontu

  1. Piesakieties savā VPS. To var izdarīt, Vultr vadības panelī noklikšķinot uz "View Console" vai izmantojot SSH klientu.

    (a) Piesakieties kā root.

    (b) Izveidojiet savu lietotāja kontu. Iestatiet paroli.

    adduser <username>
    passwd <username>
    

    (c) Piešķiriet lietotājam sudo piekļuvi.

    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) Izrakstieties kā root, pēc tam atkal piesakieties ar savu lietotāja kontu. Daudz drošāk ir nekad nepieteikties kā root. Sudo izmantošana ir labāka prakse.

Ja vēlaties instalēt oficiāli atbalstīto (vecāko) GDB versiju

  1. Instalējiet GDB.

    sudo yum install gdb
    
  2. Pārbaudiet instalēto versiju un skatiet tās atrašanās vietu.

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

Ja vēlaties instalēt jaunāku GDB versiju no avota

  1. Instalējiet C kompilatoru, piemēram, GCC. C++ kompilators nav nepieciešams, lai izveidotu GDB no avota, bet tas ir nepieciešams, lai demonstrētu GDB jauko drukāšanas funkciju. Varat izveidot jaunāku GCC versiju no avota, veicot darbības, kas norādītas rakstā Kā instalēt GCC operētājsistēmā CentOS 6 . Vai arī varat instalēt CentOS 6 oficiāli atbalstīto GCC versiju, izpildot:

    sudo yum install gcc gcc-c++
    
  2. Instalējiet papildus nepieciešamās pakotnes.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Izlemiet, kuru GDB versiju vēlaties izveidot no avota. Apmeklējiet GDB FTP vietni, lai skatītu lejupielādei pieejamās versijas.

  4. Iegūstiet vajadzīgās GDB versijas avotu. Pārējā šī raksta daļa ir rakstīta versijai 7.9.1, un tajā tiks lejupielādēti avoti~/sourceInstallations/gdb-7.9.1/ — jums būs jāaizstāj atbilstošs versijas numurs ar jaunākām versijām.

    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. Izveidojiet GDB. Ja tas tiks pabeigts pareizi, pēdējā rindiņā būs uzraksts "veiksmi". Ir normāli, ja daži kļūdaini ziņojumi ātri ritina garām. Tos var droši ignorēt.

    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. Instalējiet 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. Pārbaudiet instalēto versiju un tās atrašanās vietu.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Pēc izvēles palaidiet GDB un skatiet skaistu drukāšanu.

    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. Pēc izvēles atgūstiet vietu cietajā diskā. Jūsu ~/sourceInstallationsdirektorijs aizņems aptuveni 386 MB. Iespējams, ka ir prātīgi saglabāt direktorijus, jo ir izvēles konfigurācijas opcijas, kuras jums var nākties izmantot kādā brīdī nākotnē, un ātrāk būtu, ja daudz kas jau būtu izdarīts. Turklāt izveides procesā tiek izveidoti žurnāli, kurus vēlāk varat pārbaudīt un pēc tam strādāt, ja kaut kas noiet greizi. Taču pēc sudo make installagrākas palaišanas jūsu instalētā GDB nav atkarīga no nekā šajā direktorijā, un vietas var būt par daudz, tāpēc varat veikt šo darbību un atgūt aptuveni 386 MB. SVARĪGI: neizdzēsiet ~/gdb_printers/direktoriju! Šī direktorija saturs tiek ielādēts katru reizi, kad palaižat GDB. Tie NAV apkopoti pašā GDB.

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

Atstājiet komentāru

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk