Como posso ler um arquivo de falha em / var / crash


20

O php-fpm bateu em nós e despejou um arquivo

/var/crash/_usr_sbin_php5-fpm.1002.crash

Há algumas informações nesse arquivo, mas o que estou procurando é na seção chamada CoreDump em um formato codificado em base64. Como posso ler o que estava sendo executado no momento do acidente?

Respostas:


18

Caso não deseje instalar várias sub-dependências da apport-retraceferramenta, você pode descompactar o formato apport em arquivos separados e usar apenas o CoreDumpdump gdbcomo de costume.

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (preste atenção aos tildes aqui!)
  4. bt (saída de rastreamento real)

    Nota: apport-unpackpor vezes, irá travar-se em operação descompactar (apport parece quebrado todo ... xD), mas o seu coredump e outros arquivos estarão lá, simplesmente ignorá-lo e apagar todos os arquivos .crash em /var/crashdepois de movê-los em outros lugares, a fim de permitir sistema para gerar novos relatórios de falhas dos mesmos aplicativos.


11
Funcionou como um encanto, sem a necessidade de instalar o apport-retrace , obrigado!
Greuze

11
@digital_infinity no ?! Veja você mesmo. Há uma grande diferença entre eco e gato ...
stamster 27/02

2
@stamster Você está certo. Desculpe, perdi o arquivo com o nome ExecutablePath. Eu pensei que o leitor deveria preencher o caminho do executável lá.
digital_infinity

15

Existe uma ferramenta chamada apport-retraceque lê os arquivos .crash e permite preenchê-lo com um rastreamento de pilha totalmente simbólico ou executar uma gdbsessão usando o dump principal. Para iniciar uma sessão gdb, execute apport-retrace -g CRASHFILE.crash. Observe que você precisa ter os pacotes -dbg instalados para obter um bom rastreamento de pilha.

Dito isto (não sou especialista em PHP), pode ser algo que você escreveu em um dos seus arquivos que está causando a falha.


4
Doesn t seem to work: # apport-retrace -g _usr_sbin_php5-fpm.1002.crash ERRO: o arquivo de relatório não contém um dos campos obrigatórios: CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369

10
Edite o arquivo de falha e adicione o campo "Pacote: 0" em ExecutableTimestamp.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.