Comment installer GDB sur CentOS 6

GDB est un débogueur pour C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada et Modula-2.

CentOS est basé sur RHEL (Red Hat Enterprise Linux). L'un des principaux objectifs de RHEL est d'être un système d'exploitation serveur stable, ce qui signifie que les nouvelles versions des progiciels ne sont pas toujours disponibles.

Au moment de l'écriture, CentOS 6 propose GDB v7.2. Cependant, l'équipe GDB a récemment publié le code de la v7.91.

Il est officiellement suggéré d'exécuter une distribution Linux différente afin d'utiliser une version plus récente de GDB. Ce n'est pas toujours idéal. Heureusement, il est possible d'installer les nouvelles versions de GDB sur CentOS 6. Étant donné que GDB est un débogueur plutôt qu'un composant central du système, vous pouvez utiliser une version plus récente en toute sécurité.

Cet article explique comment installer les versions prises en charge et non prises en charge de GDB sur CentOS 6.

Je vais également expliquer comment configurer GDB pour vous donner des informations de débogage plus faciles à lire lorsque vous utilisez la bibliothèque standard C ++ (comme la chaîne) et la bibliothèque de modèles standard (comme le vecteur). Cette fonctionnalité est appelée jolie impression.

Connectez-vous à votre VPS et configurez votre compte utilisateur

  1. Connectez-vous à votre VPS. Cela peut être fait en cliquant sur "View Console" dans le panneau de configuration Vultr, ou avec un client SSH.

    (a) Connectez-vous en tant que root.

    (b) Créez votre propre compte utilisateur. Définissez le mot de passe.

    adduser <username>
    passwd <username>
    

    (c) Accordez à l'utilisateur sudo l'accès.

    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) Déconnectez-vous en tant que root, puis reconnectez-vous avec votre compte d'utilisateur. Il est beaucoup plus sûr de ne jamais se connecter en tant que root. L'utilisation de sudo est une meilleure pratique.

Si vous souhaitez installer la version (plus ancienne) officiellement prise en charge de GDB

  1. Installez GDB.

    sudo yum install gdb
    
  2. Vérifiez la version installée et voyez son emplacement.

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

Si vous souhaitez installer une version plus récente de GDB à partir de la source

  1. Installez un compilateur C, tel que GCC. Un compilateur C ++ n'est pas nécessaire pour construire GDB à partir de la source, mais il est nécessaire pour démontrer la jolie fonctionnalité d'impression de GDB. Vous pouvez créer une version plus récente de GCC à partir des sources en effectuant les étapes de l'article Comment installer GCC sur CentOS 6 . Ou, vous pouvez installer la version CentOS 6 officiellement prise en charge de GCC en exécutant:

    sudo yum install gcc gcc-c++
    
  2. Installez les packages supplémentaires requis.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Décidez quelle version de GDB vous souhaitez créer à partir des sources. Visitez le site FTP de GDB pour voir les versions disponibles en téléchargement.

  4. Obtenez la source de la version de GDB que vous souhaitez. Le reste de cet article est écrit pour la v7.9.1 et téléchargera les sources dans ~/sourceInstallations/gdb-7.9.1/- vous devrez remplacer le numéro de version approprié pour les versions plus récentes.

    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. Construisez GDB. Si cela se termine correctement, la dernière ligne que vous verrez indiquera "succès". Il est normal de voir défiler rapidement des messages d'erreur. Il est sûr de les ignorer.

    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. Installez la jolie impression C ++.

    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. Vérifiez la version installée et son emplacement.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Exécutez éventuellement GDB et voyez une jolie impression.

    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. Récupérez éventuellement de l'espace sur le disque dur. Votre ~/sourceInstallationsrépertoire occupera environ 386 Mo. Il est probablement sage de conserver les répertoires, car il est possible que vous deviez utiliser des options de configuration facultatives à un moment donné dans le futur, et il serait plus rapide d'en avoir déjà beaucoup fait. En outre, le processus de génération crée des journaux que vous pouvez vérifier ultérieurement et travailler en cas de problème. Mais, après avoir exécuté sudo make installplus tôt, votre GDB installé ne dépend de rien dans ce répertoire, et l'espace peut être limité, vous pouvez donc faire cette étape et récupérer les 386 Mo environ. IMPORTANT: ne supprimez pas le ~/gdb_printers/répertoire! Le contenu de ce répertoire est chargé à chaque fois que vous exécutez GDB. Ils n'ont PAS été compilés dans GDB lui-même.

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


Leave a Comment

Comment générer des clés SSH?

Comment générer des clés SSH?

Découvrez comment générer une clé SSH pour accéder à votre serveur sans mot de passe. Suivez nos étapes faciles à comprendre pour créer et ajouter des clés SSH.

Créer un serveur de messagerie avec hMailServer sous Windows

Créer un serveur de messagerie avec hMailServer sous Windows

Découvrez comment créer un serveur de messagerie avec hMailServer sous Windows pour recevoir des e-mails facilement.

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.