Como criar um backtrace útil no Linux

Sintomas

Ao trabalhar no Linux, às vezes pode acontecer que o BricsCAD falhe repentinamente e desapareça.

Ao executar o BricsCAD a partir do Terminal, uma curta mensagem de erro é impressa (geralmente será "Falha de segmentação"), mas isso não fornece informações úteis sobre o motivo da falha.

A partir do BricsCAD V24.2, em caso de falha (falha de segmentação), a aplicação gera um crash_report.txt (relatório de falha) que contém informações de diagnóstico, incluindo o backtrace.

Nesse caso, um backtrace (stack trace) torna-se muito útil para a equipe de suporte técnico identificar a causa do bloqueio. Este mostra a pilha atual de chamadas de função aninhadas no momento da falha.

Causa

BricsCAD falha sem informações úteis sobre o travamento.

Solução

Para obter o backtrace, siga estas etapas:
  1. Em uma instância do Terminal, execute o BricsCAD dentro do gdb com o seguinte comando:
    LD_LIBRARY_PATH=/opt/bricsys/bricscad/vXX GDK_BACKEND=x11 QT_QPA_PLATFORM=xcb gdb 
    /opt/bricsys/bricscad/vXX/bricscad
    Nota: Substitua 'vXX' pelo número da versão principal do BricsCAD, por exemplo V24.
  2. Na janela, digite run e pressione Enter para iniciar o programa.
  3. Reproduza o acidente. Depois de travar, a janela do BricsCAD simplesmente congela, mas não desaparece.
  4. Volte para o Terminal, digite bt e pressione Enter para obter um backtrace.

    Se o bt não funcionar, isso significa que o BricsCAD pode estar travando em vez de falhar. Nesse caso, pressione CTRL+C para pausar o BricsCAD e, em seguida, bt deverá funcionar.

    Da mesma forma que bt, execute o comando gdb disas e cole a saída no mesmo arquivo de texto.

    O backtrace completo pode não caber na tela. Nesse caso, a última linha fica assim:
    ---Type  < return >  to continue, or q < return > to quit---
  5. Copie a parte relevante do backtrace em um editor de texto e anexe-o a um pedido de suporte ou poste-o diretamente no Pedido de Suporte.
  6. Digite q e pressione Enter na janela do Terminal.
  7. Digite y e pressione Enter para confirmar.