Quantcast
Viewing latest article 5
Browse Latest Browse All 10

Qt Creator v9.0.2 Debug Helpers não Funcionam no Ubuntu 23.04 e Debian Bookworm 12

Se você estiver usando o Qt Creator no Ubuntu 23.04 ou no Debian 12 Bookworm, pode ser que tenha notado esse detalhe: durante o debug endereços são mostrados ao invés dos valores das variáveis locais.

Image may be NSFW.
Clik here to view.
alt

Eu passei alguma raiva para achar a causa desse problema e nesse post irei compartilhar com vocês a solução.

🤔 Causa

O Qt Creator injeta, na inicialização da sessão de debug, alguns scripts Python no GDB, eles sabem como executar o pretty print de variáveis complexas do Qt, QString, QByteArray, QSuaVó e etc. Para o GDB esses tipos são apenas ponteiros e sem os scripts ele retorna por padrão seus endereços.

⚠️ Aqui é uma das razões de que, quando depuramos aplicações Qt no VS Code ele não resolve as variáveis do Qt. O VS Code não injeta esses scripts e o pretty print não acontece.

No Ubuntu 23.04 e Debian 12 Bookworm Python 3 é a versão 3.11.x. Nessa versão a função getargspec do módulo inspect foi removida, já estava marcada como deprecada e então foi enfim removida. E os scripts do Qt Creator, v9.0.2, usam essa função.

E agora José? 🤔

Bom, fácil, vamos fazer o porte do script que usa o getargspec. Sim, mas o problema foi chegar a conclusão, de que o problema era o uso do getargspec. Sabe por que? Porque o GDB não reclama, sem stack trace, sem nada, ele simplesmente não funciona como deveria. Daí o jeito foi debugar, by print, e "trackear" o fluxo de execução do script.

Mas como eu sou muito bonzinho, vou poupar vocês desse trabalho e já vou compartilhar a solução.

💡 Solução

Execute o seguinte comando no terminal:

sudo sed -i 's/inspect\.getargspec/inspect.getfullargspec/g' /usr/share/qtcreator/debugger/dumper.py

Pronto, agora é só iniciar o Qt Creator e ser feliz com debug e pretty print funcionando.

Image may be NSFW.
Clik here to view.
alt

O que estamos fazendo nesse comando? Como está descrito no What's New In Python 3.11, estamos usando o getfullargspec ao invés do getargspec.

⚠️ Tenha certeza de ter o Use Debugging Helpers habilitado nas configurações do Qt Creator. Edit > Preferences > Debugger > Locals & Expressions:
Image may be NSFW.
Clik here to view.
alt
Sem essa opção habilitada o Qt Creator não injeta os scripts no GDB.

Torizon VS Code Extension

Se você usa a extensão do VS Code para depurar aplicações Torizon, e está enfrentando o mesmo problema, já há uma tasks que aplica o fix no script do Qt Creator. Basta executar a task fix-debugger-helper-qt-creator, digitar sua senha de usuário administrador e pronto.

Image may be NSFW.
Clik here to view.
alt

✅ Conclusão

Até que isso seja corrigido no pacote do Qt Creator para o Debian e Ubuntu essa é uma solução. Se você usa outra distro, ou outra versão do Qt Creator, verifique se o problema é o mesmo e se for, faça o porte do script.

Esse post foi útil para você? Deixe eu saber, me contacte, siga nas redes sociais:


Image may be NSFW.
Clik here to view.



Image may be NSFW.
Clik here to view.



Image may be NSFW.
Clik here to view.



Image may be NSFW.
Clik here to view.


Viewing latest article 5
Browse Latest Browse All 10

Trending Articles