/ var / crashからクラッシュファイルを読み取る方法


20

php-fpmがクラッシュし、ファイルをダンプしました

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

そのファイルにはいくつかの情報がありますが、私が望んでいるのは、base64エンコード形式のCoreDumpというセクションです。クラッシュ時に実行されていたものを読み取るにはどうすればよいですか?

回答:


18

apport-retraceツールのサブ依存関係をインストールしたくない場合は、apport形式を個別のファイルに解凍CoreDumpgdb、通常どおりにダンプのみを使用できます。

  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をインストールする必要なく、魅力のように機能しました、ありがとう!
グルーズ

1
@digital_infinityいいえ?!自分で見てください。echoとcatには大きな違いがあります...
stamster

2
@stamsterその通りです。という名前のファイルがあることを残念に思いましたExecutablePath。読者はそこで実行可能パスを埋めなければならないと思った。
digital_infinity

15

apport-retrace.crashファイルを読み取り、完全なシンボリックスタックトレースでそれを埋めるかgdb、コアダンプを使用してセッションを実行できるツールがあります。gdbセッションを開始するには、を実行しapport-retrace -g CRASHFILE.crashます。適切なスタックトレースを取得するには、-dbgパッケージをインストールする必要があることに注意してください。

そうは言っても(私はPHPの専門家ではありません)、実際にクラッシュの原因となっているファイルの1つに書いたものである可能性があります。


4
Doesn t seem to work: #apport-retrace -g _usr_sbin_php5-fpm.1002.crashエラー:レポートファイルに必須フィールドの1つが含まれていません:CoreDump DistroRelease Package ExecutablePath` # grep CoreDump _usr_sbin_php5-fpm.1002.crash CoreDump: base64
user76369 14年

10
クラッシュファイルを編集し、ExecutableTimestampの下に「Package:0」フィールドを追加します。
-DarkNeuron
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.