Sou bem tranquilo em relação a resolver bugs que eu crio. O que não gosto é ter que solucionar problemas de compatibilidade.
Estava aqui “de boas” programando para um tutorial, de repente eu resolvi rodar o debugger pra analisar uma condição; três linhas, só pra monitorar a alimentação de uma variável. Deveria ser uma coisa simples, mas infelizmente a versão do GDB que tenho instalada não era compatível com o a versão mais atual do Qt. Bom, vamos então resolver o problema.
The selected build of GDB does not support Python scripting
Se você está recebendo essa mensagem ao tentar rodar o debugger, antes de seguir o procedimento você pode confirmar se seu problema é igual ao que estou apresentando aqui. Abra o GDB e execute um comando python simples:
gdb python print "oi"
No meu caso, o resultado foi a última linha dessa saída:
Tendo confirmado isso, você pode também dar uma checada se na chamada do gdb a versão bate com a minha (estou usando Debian Stretch, que deveria se chamar “Debian iStrash”, por N motivos).
Compilar o GDB
Pra isso, precisamos primeiramente ter instalado alguns pacotes:
sudo apt-get install python-dev libncurses5-dev
Se durante a compilação tiver erros de dependências, não se angustie. Tudo estará no repositório, se não souber o nome do pacote, procure no google copiando um trecho da mensagem de dependência. Eu tive um erro com o makeinfo, mas ele só é necessário se quiser modificar algum ‘.texi’, então ignorei, mas aborrecido.
Depois, vá ao repositório e baixe o GDB. Para esse artigo estou utilizando a versão 8.0.
Descomprima o pacote, entre no diretório e faça o procedimento:
tar xvJf gdb-8.0.tar.xz cd gdb-8.0 ./configure -with-separate-debug-dir=/usr/lib/debug \ --prefix /usr/local/gdb-python2 make sudo make install
Não remova o pacote gdb-minimal
Se você tentar fazer um apt-get remove gdb-minimal e por tristeza apertar Y, vai abrir um vórtice temporal bem embaixo do seu computador e vai sugar tudo pra outra dimensão. Se fizer isso, tenha absoluta certeza que o sistema inteiro vai pro saco, ainda mais se estiver utilizando o KDE. Portanto, conviva com essa mer… digo, essa versão em seu computador.
Seu novo GDB estará em /usr/local/gdb-python2/bin/gdb. Teste-o antes de ficar feliz, repetindo o teste supracitado, mas dessa vez não chame o gdb sem o path absoluto senão ele vai executar o gdb-minimal.
/usr/local/gdb-python2/bin/gdb python print "oi"
Dessa vez, se tudo ocorrer como esperado, devemos obter uma mensagem assim:
Agora vamos mexer no sistema. Entre em /usr/bin e renomeie os programas relacionados ao gdb, então crie os links simbólicos:
cd /usr/bin sudo su mv gdb gdb-minimal mv gcore gcore-minimal ln -s /usr/local/gdb-python2/bin/* /usr/bin/
Agora o gdb padrão do sistema é o que compilamos. Não deu certo ainda? Hum, ok. Temos mais uma opção.
lldb
O lldb é um debugger melhorado, mas ainda em fase experimental no Qt. De qualquer modo, é melhor um debugger capenga do que debugger nenhum.
Primeiramente, instale-o com o apt:
sudo apt-get install lldb
Depois vá em Projects > Manage Kits (“Projects” é um icone à esquerda da janela).
Nessa janela, apenas mude o debugger para ficar como abaixo:
Se isso não funcionar, meu caro, considere migrar para outro Linux.
Siga-nos no Do bit Ao Byte no Facebook.
Prefere twitter? @DobitAoByte.
Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.
Nossos grupos:
Arduino BR
https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR
https://www.facebook.com/groups/raspberrybr/
Orange Pi BR
https://www.facebook.com/groups/OrangePiBR/
Odroid BR
https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR
https://www.facebook.com/groups/SistemasEmbarcadosBR/
Sistemas Eletrônicos
https://www.facebook.com/groups/544679592355388/
Projetos Arduino | Eletrônica
https://www.facebook.com/groups/projetosarduinoeletronica/
ESP8266 e ESP32
https://www.facebook.com/groups/ESP8266BR/
ARM Brasil
https://www.facebook.com/groups/508153815944410/
MIPS BR
https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte
https://www.facebook.com/groups/dobitaobyte/
Próximo post a caminho!