Você precisa usar o apport-unpack. Então gdb e backtrace. Há bons exemplos on-line sobre como usar o apport-unpack.
Então, eu tenho tentado depurar uma estranha pane intermitente no kernel para um servidor rodando o Ubuntu-Server 16.04, que me deixou perplexo por muito tempo, então eu instalei e configurei linux-crashdump
seguindo o Receita de despejo de memória do wiki do Ubuntu .
Depois de aguardar o problema, o linux-crashdump
fez o que queria e gerou um despejo de memória, mas agora não consigo descobrir como usá-lo!
O guia do Ubuntu fornece dois métodos para visualizá-los, usando crash
ou apport-retrace
, mas nenhum desses métodos funciona como descrito.
apport-retrace
simplesmente retorna:
ERROR: report file does not contain the required fields
Enquanto isso, para crash
, fiz o download da imagem apropriada com informações de depuração usando apt-get install linux-image-$(uname -r)-dbgsym
, conforme recomendado, antes de executar o seguinte comando:
crash /usr/lib/debug/boot/vmlinux-4.4.0-93-generic /var/crash/linux-image-4.4.0-93-generic-201709131146.crash
No entanto, isso resulta em um erro de:
crash: linux-image-4.4.0-93-generic-201709131146.crash: not a supported file format
Qual é a maneira correta de visualizar linux-crashdump
dumps agora? Estou faltando etapas que não estão no guia?
Você precisa usar o apport-unpack. Então gdb e backtrace. Há bons exemplos on-line sobre como usar o apport-unpack.
Então eu percebi isso; parece que a carne real do despejo de memória não está no arquivo .crash
, mas está dentro de uma pasta.
O conteúdo relevante da minha pasta /var/crash
é assim:
/var/crash/
201709131146/
dmesg.201709131146
dump.201709131146
linux-image-4.4.0-93-generic-201709131146.crash
Então, o que eu precisava fazer era:
crash /usr/lib/debug/boot/vmlinux-4.4.0-93-generic /var/crash/201709131146/dump.201709131146
Isso (eventualmente) me deu um rastreamento de pilha útil e outros detalhes sobre o que deu errado.