如何从/ var / crash中读取崩溃文件


20

php-fpm崩溃了,并在其中转储了一个文件

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

该文件中有一些信息,但是我要寻找的是名为Base64编码格式的CoreDump部分。我该如何读取当机时发生的状况?

Answers:


18

如果您不想为apport-retrace工具安装一堆子依赖项,则可以将apport格式解压缩到单独的文件中,并且像往常一样仅使用CoreDump转储gdb

  1. apport-unpack systemGeneratedCrashReportPath.crash yourNewUnpackDirectoryHere
  2. cd yourNewUnpackDirectoryHere/
  3. gdb `cat ExecutablePath` CoreDump (在这里注意波浪号!)
  4. bt (输出实际回溯)

    注意:apport-unpack有时在解压缩操作时会崩溃(apport似乎在所有地方都损坏了... xD),但是您的CoreDump和其他文件将在那里,只是忽略它,并在/var/crash将它们移至其他位置后删除所有.crash文件以允许系统从那里的相同应用程序输出新的崩溃报告。


1
像魅力一样工作,无需安装apport-retrace,谢谢!
greuze

1
@digital_infinity不?!自己看看。echo和cat之间有很大的区别……
stamster

2
@stamster你是对的。抱歉,我错过了一个名为name的文件ExecutablePath。我认为读者必须在此处填写可执行文件路径。
digital_infinity

15

有一个名为的工具apport-retrace可以读取.crash文件,并允许您使用完全符号化的堆栈跟踪填充该文件或gdb使用核心转储运行会话。要启动gdb会话,请运行apport-retrace -g CRASHFILE.crash。请注意,您需要安装-dbg软件包才能获得良好的堆栈跟踪。

话虽这么说(我不是PHP专家),实际上可能是您在导致崩溃的文件之一中写的东西。


4
t seem to work: #apport-retrace -g _usr_sbin_php5-fpm.1002.crash错误:报告文件不包含以下必填字段之一:CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369 2014年

10
编辑崩溃文件,并在ExecutableTimestamp下添加字段“ Package:0”。
DarkNeuron '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.