A GDB telepítése CentOS 6 rendszeren

A GDB a C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada és Modula-2 hibakeresője.

A CentOS az RHEL-en (Red Hat Enterprise Linux) alapul. Az RHEL egyik fő célja, hogy stabil szerver operációs rendszer legyen, ami azt jelenti, hogy a szoftvercsomagok újabb verziói nem mindig állnak rendelkezésre.

A cikk írásakor a CentOS 6 GDB v7.2-t kínál. A GDB csapata azonban nemrégiben kiadta a v7.91-es kódot.

Hivatalosan javasolt egy másik Linux disztró futtatása a GDB újabb verziójának használatához. Ez nem mindig ideális. Szerencsére lehetőség van a GDB újabb verzióinak telepítésére a CentOS 6 rendszerre. Mivel a GDB egy hibakereső, nem pedig a rendszer alapvető összetevője, meglehetősen biztonságos az újabb verzió használata.

Ez a cikk elmagyarázza, hogyan telepítheti a GDB támogatott és nem támogatott verzióit is CentOS 6 rendszeren.

Azt is elmagyarázom, hogyan kell beállítani a GDB-t, hogy könnyebben olvasható hibakeresési információkat nyújtson a C++ Standard Library (például karakterlánc) és a Standard Template Library (például vektor) használatakor. Ezt a funkciót szép nyomtatásnak nevezik.

Jelentkezzen be a VPS-be, és állítsa be felhasználói fiókját

  1. Jelentkezzen be a VPS-be. Ezt megteheti a Vultr vezérlőpultján a „View Console” (Konzol megtekintése) lehetőségre kattintva vagy egy SSH-kliens segítségével.

    (a) Jelentkezzen be rootként.

    (b) Hozzon létre saját felhasználói fiókot. Állítsa be a jelszót.

    adduser <username>
    passwd <username>
    

    (c) Adjon a felhasználónak sudo hozzáférést.

    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) Jelentkezzen ki rootként, majd jelentkezzen be újra felhasználói fiókjával. Sokkal biztonságosabb, ha soha nem jelentkezik be rootként. A sudo használata jobb gyakorlat.

Ha a GDB hivatalosan támogatott (régebbi) verzióját szeretné telepíteni

  1. Telepítse a GDB-t.

    sudo yum install gdb
    
  2. Ellenőrizze a telepített verziót, és nézze meg a helyét.

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

Ha a GDB újabb verzióját szeretné telepíteni a forrásból

  1. Telepítsen egy C fordítót, például a GCC-t. A C++ fordító nem szükséges a GDB forrásból való felépítéséhez, de szükséges a GDB szép nyomtatási funkciójának bemutatásához. A GCC újabb verzióját a forrásból készítheti el a GCC telepítése CentOS 6 rendszeren című cikk lépéseinek végrehajtásával . Vagy telepítheti a GCC hivatalosan támogatott CentOS 6 verzióját a következő futtatással:

    sudo yum install gcc gcc-c++
    
  2. Telepítse a további szükséges csomagokat.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Döntse el, hogy a GDB melyik verzióját szeretné forrásból felépíteni. Látogassa meg a GDB FTP webhelyét a letölthető verziók megtekintéséhez.

  4. Szerezze be a GDB kívánt verziójának forrását. A cikk további része a 7.9.1-es verzióhoz készült, és a forrásokat ide fogja letölteni ~/sourceInstallations/gdb-7.9.1/– az újabb verziókra a megfelelő verziószámot kell behelyettesítenie.

    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. Építsd meg a GDB-t. Ha ez helyesen fejeződik be, az utolsó sorban a „siker” lesz látható. Normális, ha néhány hibásnak tűnő üzenet gyorsan elgurul. Ezeket nyugodtan figyelmen kívül hagyhatjuk.

    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. Telepítse a C++ szép nyomtatást.

    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. Ellenőrizze a telepített verziót és annak helyét.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Opcionálisan futtassa a GDB-t, és nézze meg a szép nyomtatást.

    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. Opcionálisan igényeljen helyet a merevlemezen. A ~/sourceInstallationskönyvtára körülbelül 386 MB-ot foglal majd el. Valószínűleg bölcs dolog megtartani a könyvtárakat, mivel vannak opcionális konfigurációs lehetőségek, amelyeket a jövőben esetleg használni kell, és gyorsabb lenne, ha sok mindent már elvégezne. Az építési folyamat emellett naplókat is készít, amelyeket később ellenőrizhet, és ha valami nem sikerül, akkor dolgozhat belőle. De a sudo make installkorábbi futás után a telepített GDB nem függ semmitől ebben a könyvtárban, és a hely prémium kategóriájú lehet, így ezt a lépést megteheti, és visszaszerezheti a 386 MB-ot. FONTOS: ne törölje a ~/gdb_printers/könyvtárat! Ennek a könyvtárnak a tartalma a GDB minden egyes futtatásakor betöltődik. NEM magába a GDB-be lettek összeállítva.

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

Hagyj kommentárt

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Egyéni Windows ISO létrehozása frissítésekkel az NTLite használatával

Ez az oktatóanyag végigvezeti Önt a Vultrs rendszerekkel kompatibilis Windows ISO létrehozásának folyamatán. Itt megtanulhatja az <>Windows ISO<> előállításának lépéseit az NTLite segítségével.

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.