Como instalar o GDB no CentOS 6

O GDB é um depurador para C, C ++, Objective-C, Pascal, Fortran, Go, D, OpenCL C, Ada e Modula-2.

O CentOS é baseado no RHEL (Red Hat Enterprise Linux). Um dos principais objetivos do RHEL é ser um sistema operacional de servidor estável, o que significa que versões mais recentes de pacotes de software nem sempre estão disponíveis.

No momento da redação deste artigo, o CentOS 6 oferece o GDB v7.2. A equipe do GDB, no entanto, lançou recentemente o código para a v7.91.

É oficialmente sugerido executar uma distribuição Linux diferente, a fim de usar uma versão mais recente do GDB. Isso nem sempre é ideal. Felizmente, é possível instalar as versões mais recentes do GDB no CentOS 6. Como o GDB é um depurador, e não um componente principal do sistema, você é bastante seguro para usar uma versão mais recente.

Este artigo explica como instalar as versões suportada e não suportada do GDB no CentOS 6.

Também explicarei como configurar o GDB para fornecer informações de depuração mais fáceis de ler ao usar a Biblioteca Padrão C ++ (como string) e a Biblioteca de Modelos Padrão (como vetor). Esse recurso é chamado de impressão bonita.

Faça login no seu VPS e configure sua conta de usuário

  1. Entre no seu VPS. Isso pode ser feito clicando em "Exibir console" no painel de controle do Vultr ou com um cliente SSH.

    (a) Faça login como root.

    (b) Crie sua própria conta de usuário. Defina a senha.

    adduser <username>
    passwd <username>
    

    (c) Conceda ao usuário acesso ao sudo.

    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) Faça logout como root e, em seguida, faça login novamente com sua conta de usuário. É muito mais seguro nunca realmente fazer login como root. Usar o sudo é uma prática melhor.

Se você deseja instalar a versão (mais antiga) oficialmente suportada do GDB

  1. Instale o GDB.

    sudo yum install gdb
    
  2. Verifique a versão instalada e veja sua localização.

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

Se você deseja instalar uma versão mais recente do GDB da fonte

  1. Instale um compilador C, como o GCC. Um compilador C ++ não é necessário para criar o GDB a partir da origem, mas é necessário para demonstrar o bonito recurso de impressão do GDB. Você pode criar uma versão mais recente do GCC a partir da fonte, executando as etapas no artigo Como instalar o GCC no CentOS 6 . Ou você pode instalar a versão do GCC com suporte oficial do CentOS 6 executando:

    sudo yum install gcc gcc-c++
    
  2. Instale pacotes adicionais necessários.

    sudo yum install wget tar gzip ncurses-devel texinfo svn python-devel
    
  3. Decida qual versão do GDB você deseja criar a partir da fonte. Visite o site FTP do GDB para ver as versões disponíveis para download.

  4. Obtenha a fonte da versão do GDB que você deseja. O restante deste artigo foi escrito para a v7.9.1 e fará o download das fontes para ~/sourceInstallations/gdb-7.9.1/- você precisará substituir o número da versão apropriada pelas versões mais recentes.

    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. Crie o GDB. Se isso for concluído corretamente, a última linha que você verá dirá "sucesso". É normal ver algumas mensagens de erro rolando rapidamente. Estes são seguros para ignorar.

    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. Instale a impressão bonita em 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. Verifique a versão instalada e sua localização.

    gdb --version
        May say: GNU gdb (GDB) 7.9.1
    which gdb
        /usr/local/bin/gdb
    
  8. Opcionalmente, execute o GDB e veja uma impressão bonita.

    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. Recupere opcionalmente o espaço no disco rígido. Seu ~/sourceInstallationsdiretório ocupará cerca de 386 MB. Provavelmente, é aconselhável manter os diretórios, pois existem opções de configuração opcionais que você pode precisar usar em algum momento no futuro, e seria mais rápido ter muito já feito. Além disso, o processo de compilação cria logs dos quais você pode verificar e trabalhar posteriormente se algo der errado. Mas, após a execução sudo make installanterior, o GDB instalado não depende de nada neste diretório, e o espaço pode ser muito alto; portanto, você pode executar esta etapa e recuperar os 386 MB ou mais. IMPORTANTE: não exclua o ~/gdb_printers/diretório! O conteúdo deste diretório é carregado toda vez que você executa o GDB. Eles NÃO foram compilados no próprio GDB.

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


Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.