Quando um aplicativo falha sem gerar um erro, há um log que eu possa verificar?

17

Às vezes acontece que alguns aplicativos travam sem dar erro de saída ( conky no meu caso, provavelmente é uma das minhas configurações incorretas).

Existe um registro de erro em algum lugar que eu possa verificar para entender por que ele falhou?

Strae
fonte

Respostas:

14

Depende do aplicativo. Diferentes aplicativos têm diferentes sistemas de registro; não há um registro central que contenha toda a saída de todos os programas executados no seu sistema.

Dito isto, uma série de programas que colocar seus arquivos de log no diretório /var/log. O arquivo /var/log/syslog(ou talvez /var/log/messages), em particular, contém a saída do "log do sistema", que é um serviço disponibilizado pelo sistema que os programas podem usar (se quiserem) para fazer logon. Mas nem todos os programas o usam. Principalmente, você encontrará mensagens de serviços de sistema de baixo nível nesse arquivo, não os aplicativos gráficos que você provavelmente usa normalmente.

Você pode querer ler mais sobre os locais dos arquivos de log padrão .

David Z
fonte
6

arquivos de falha entram em /var/log/crashes/uso com o apport para relatar bugs. Você pode extrair um dump principal comapport-unpack , colocar esse dump no gdb e descobrir o que está causando o travamento do programa.

Tudo isso assumindo que você é um programador. Se você não está ... bem, você não pode consertar a falha de qualquer maneira!

maco
fonte
1
"Isso tudo pressupõe que você é um programador. Se você não é ... bem, você não pode consertar a falha de qualquer maneira!" com código-fonte aberto todos nós podemos tentar resolver os nossos problemas, no nosso próprio risco, obviamente;)
Strae
@DaNiel: Na verdade não! Se você não é um programador e você não tem uma boa compreensão do código de aplicações, mais você mexer com o código do buggier com provavelmente terá :)
AntonioCS
1
Mesmo que você não seja um programador, às vezes, procurar um dump principal pode dar uma idéia do problema. Por exemplo, parece que ele está falhando em algum tipo de gráficos de rotina - talvez eu devesse atualizei meu driver de vídeo ...
user1242
2
..e ele ajuda descrevendo os erros nos relatórios / fóruns de bugs;)
Strae
1
Você conhece não programadores que podem usar o gdb? Sou programador e posso chegar até bt full"oh, olhe para trás ... com símbolos ausentes ... acho que preciso instalar símbolos de depuração e tentar reproduzir a falha ..." Uma vez, descobri como definir um ponto de interrupção ... esse é o mais avançado que eu consegui.
maco
3

Para o conky, também pode haver entradas em $HOME/.xsession-errors.

qbi
fonte
2

Alguns aplicativos possuem sinalizadores que podem ser usados ​​para ativar a depuração, como -d, -D, --debug, etc. Verifique a página de manual do aplicativo (man [my-app] ) ou execute o aplicativo com o sinalizador -h para ver se ele possui esse tipo de opção.

Muitos aplicativos de GUI gravam em $ HOME / .xsession-errors, portanto esse é um bom lugar para verificar a saída.

a maco está certa de que apport é provavelmente a maneira mais segura de obter boas informações de depuração. Às vezes, ele não captura a falha, no entanto.

Se tudo mais falhar, você também pode forçar a informação executando o aplicativo em gdb. Seria algo como:

$ gdb my-app

(gdb) run

... faça o que for necessário para travar ...

(gdb) bt full

e vá de lá.

Se você seguir a rota gdb, também desejará instalar símbolos, como mencionado anteriormente. Veja https://wiki.ubuntu.com/DebuggingProgramCrash para obter conselhos sobre como segurar a mão.

Bryce
fonte
A melhor resposta para mim, sem dúvida
Claudix 16/04
1

você pode ir para /var/log/messages or crashesentão você pode executar o grepcomando neles e procurar o aplicativo que você procura pelos arquivos às vezes pode ficar bem grande. Ele retornará informações relevantes para sua aplicação. :)

myusuf3
fonte
1

Se você estiver iniciando seu aplicativo a partir de um arquivo do iniciador .desktop, adicione a opção Terminal=trueao seu arquivo .desktop. Isso abrirá um terminal quando você executar o programa; a saída no terminal será semelhante ao que você veria se tivesse executado o programa pela linha de comando em primeiro lugar. Dessa forma, quando a GUI trava ou trava, você pode ver qual saída de texto estava levando até ela.

Selah
fonte
O que isso faz? Eu já tenho esse conjunto e não está registrando nada extra.
Matt
Tentei responder sua pergunta editando minha resposta. Isso faz sentido?
Selah