Hoe GDB op CentOS te installeren 6

GDB is een debugger voor C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada en Modula-2.

CentOS is gebaseerd op RHEL (Red Hat Enterprise Linux). Een van de belangrijkste doelen van RHEL is om een ​​stabiel serverbesturingssysteem te zijn, wat betekent dat nieuwere versies van softwarepakketten niet altijd beschikbaar zijn.

Op het moment van schrijven biedt CentOS 6 GDB v7.2. Het GDB-team heeft echter onlangs code uitgebracht voor v7.91.

Er wordt officieel voorgesteld om een ​​andere Linux-distro uit te voeren om een ​​nieuwere versie van GDB te gebruiken. Dit is niet altijd ideaal. Gelukkig is het mogelijk om de nieuwere versies van GDB op CentOS 6 te installeren. Aangezien GDB een debugger is in plaats van een systeemkerncomponent, is het redelijk veilig om een ​​nieuwere versie te gebruiken.

Dit artikel legt uit hoe u zowel ondersteunde als niet-ondersteunde versies van GDB op CentOS 6 installeert.

Ik zal ook uitleggen hoe GDB moet worden ingesteld om u gemakkelijker leesbare foutopsporingsinformatie te geven bij het gebruik van de C ++ Standard Library (zoals string) en de Standard Template Library (zoals vector). Deze functie wordt mooi afdrukken genoemd.

Log in op je VPS en stel je gebruikersaccount in

  1. Log in op je VPS. Dit kan gedaan worden door te klikken op "View Console" in het Vultr-configuratiescherm, of met een SSH-client.

    (a) Log in als root.

    (b) Maak uw eigen gebruikersaccount aan. Stel het wachtwoord in.

    adduser <username>
    passwd <username>
    

    (c) Geef de gebruiker sudo toegang.

    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) Meld u af als root en meld u vervolgens weer aan met uw gebruikersaccount. Het is veel veiliger om nooit als root in te loggen. Het gebruik van sudo is een betere gewoonte.

Als je de officieel ondersteunde (oudere) versie van GDB wilt installeren

  1. Installeer GDB.

    sudo yum install gdb
    
  2. Controleer de geïnstalleerde versie en bekijk de locatie.

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

Als u een nieuwere versie van GDB vanaf de bron wilt installeren

  1. Installeer een C-compiler, zoals GCC. Een C ++ -compiler is niet nodig om GDB vanuit de bron te bouwen, maar is nodig om de mooie afdrukfunctie van GDB te demonstreren. U kunt een recentere versie van GCC vanaf de bron bouwen door de stappen uit te voeren in het artikel GCC installeren op CentOS 6 . Of u kunt de officieel ondersteunde versie van GCC CentOS 6 installeren door het volgende uit te voeren:

    sudo yum install gcc gcc-c++
    
  2. Installeer extra vereiste pakketten.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Bepaal welke versie van GDB u vanaf de bron wilt bouwen. Bezoek de GDB FTP-site om de versies te zien die beschikbaar zijn om te downloaden.

  4. Download de bron van de gewenste versie van GDB. De rest van dit artikel is geschreven voor v7.9.1 en zal de bronnen downloaden naar ~/sourceInstallations/gdb-7.9.1/- u moet het juiste versienummer vervangen door nieuwere versies.

    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. Bouw GDB. Als dit correct is ingevuld, zal de laatste regel die je ziet "succes" zeggen. Het is normaal dat er snel foutmeldingen verschijnen. Deze zijn veilig te negeren.

    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. Installeer 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. Controleer de geïnstalleerde versie en de locatie.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Voer optioneel GDB uit en zie mooie afdrukken.

    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. Herstel optioneel ruimte op de harde schijf. Uw ~/sourceInstallationsdirectory neemt ongeveer 386 MB in beslag. Het is waarschijnlijk verstandig om de mappen te bewaren, aangezien er optionele configuratie-opties zijn die u op een bepaald moment in de toekomst mogelijk moet gebruiken, en het zou sneller zijn als er al veel gedaan is. Het bouwproces maakt ook logboeken die u later kunt controleren en waarmee u kunt werken als er iets misgaat. Maar nadat u sudo make installeerder hebt uitgevoerd, is uw geïnstalleerde GDB niet afhankelijk van iets in deze map en kan ruimte schaars zijn, dus u kunt deze stap doen en de 386 MB of zo terugwinnen. BELANGRIJK: verwijder de ~/gdb_printers/directory niet! De inhoud van deze map wordt elke keer geladen wanneer u GDB uitvoert. Ze zijn NIET gecompileerd in GDB zelf.

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

Laat een reactie achter

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.