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.
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 opretty 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.
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 oUse Debugging Helpers
habilitado nas configurações do Qt Creator.Edit > Preferences > Debugger > Locals & Expressions
:
Image may be NSFW.
Clik here to view.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.
✅ 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.