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.

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.

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:
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.

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: