Hur man installerar GDB på CentOS 6

GDB är en debugger för C, C++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada och Modula-2.

CentOS är baserat på RHEL (Red Hat Enterprise Linux). Ett av huvudmålen med RHEL är att vara ett stabilt serveroperativsystem, vilket innebär att nyare versioner av mjukvarupaket inte alltid är tillgängliga.

I skrivande stund erbjuder CentOS 6 GDB v7.2. GDB-teamet släppte dock nyligen kod för v7.91.

Det föreslås officiellt att köra en annan Linux-distro för att kunna använda en nyare version av GDB. Det här är inte alltid idealiskt. Lyckligtvis är det möjligt att installera de nyare versionerna av GDB på CentOS 6. Eftersom GDB är en debugger snarare än en systemkärnkomponent, är du ganska säker att använda en nyare version.

Den här artikeln förklarar hur du installerar versioner av GDB som stöds och som inte stöds på CentOS 6.

Jag kommer också att förklara hur du ställer in GDB för att ge dig lättare att läsa felsökningsinformation när du använder C++ Standard Library (som sträng) och Standard Template Library (som vektor). Denna funktion kallas pretty printing.

Logga in på din VPS och skapa ditt användarkonto

  1. Logga in på din VPS. Detta kan göras genom att klicka på "View Console" i Vultr kontrollpanelen, eller med en SSH-klient.

    (a) Logga in som root.

    (b) Skapa ditt eget användarkonto. Ställ in lösenordet.

    adduser <username>
    passwd <username>
    

    (c) Ge användaren sudo-åtkomst.

    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) Logga ut som root och logga sedan in igen med ditt användarkonto. Det är mycket säkrare att aldrig logga in som root. Att använda sudo är en bättre praxis.

Om du vill installera den officiellt stödda (äldre) versionen av GDB

  1. Installera GDB.

    sudo yum install gdb
    
  2. Kontrollera den installerade versionen och se dess plats.

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

Om du vill installera en nyare version av GDB från källan

  1. Installera en C-kompilator, till exempel GCC. En C++-kompilator behövs inte för att bygga GDB från källkod, men behövs för att demonstrera GDB:s snygga utskriftsfunktion. Du kan bygga en nyare version av GCC från källan genom att utföra stegen i artikeln Hur man installerar GCC på CentOS 6 . Eller så kan du installera CentOS 6-versionen av GCC som officiellt stöds genom att köra:

    sudo yum install gcc gcc-c++
    
  2. Installera ytterligare nödvändiga paket.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Bestäm vilken version av GDB du vill bygga från källan. Besök GDB FTP-webbplatsen för att se de versioner som är tillgängliga för nedladdning.

  4. Hämta källan till den version av GDB du vill ha. Resten av den här artikeln är skriven för v7.9.1 och kommer att ladda ner källorna till ~/sourceInstallations/gdb-7.9.1/- du måste ersätta nyare versioner med rätt versionsnummer.

    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. Bygg GDB. Om detta slutförs korrekt kommer den sista raden du ser att säga "framgång". Det är normalt att se några felmeddelanden som snabbt rullar förbi. Dessa är säkra att ignorera.

    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. Installera 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. Kontrollera den installerade versionen och dess plats.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Kör eventuellt GDB och se snygga utskrifter.

    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. Eventuellt återta hårddiskutrymme. Din ~/sourceInstallationskatalog kommer att ta upp cirka 386 MB. Det är förmodligen klokt att behålla katalogerna, eftersom det finns valfria konfigurationsalternativ som du kan behöva använda någon gång i framtiden, och det skulle vara snabbare att ha mycket redan gjort. Byggprocessen skapar också loggar som du senare kan kontrollera och arbeta utifrån om något går fel. Men efter att ha körts sudo make installtidigare är din installerade GDB inte beroende av någonting i den här katalogen, och utrymmet kan vara mycket dyrt, så du kan göra det här steget och återta 386 MB eller så. VIKTIGT: ta inte bort ~/gdb_printers/katalogen! Innehållet i den här katalogen laddas varje gång du kör GDB. De kompilerades INTE i själva GDB.

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

Lämna en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer