web-dev-qa-db-ja.com

CoreDumpファイルを表示するにはどうすればよいですか?

クラッシュからバグを報告する場合、バグは非公開になり、CoreDump.gzというファイルが作成されます。 Bug Triageのドキュメントには、次のことが記載されています。

クラッシュにまだCoreDump.gz添付ファイルがある場合、完全にシンボリックなスタックトレースを自動的に取得して重複をチェックすることはできませんでした。

Stacktrace.txtは人間が読めるようです。スタックトレースの意味を理解するにはどうすればよいですか。 CoreDump.gzを使用したCoreDumpは、人間が読めるようには見えません。 「完全にシンボリックなスタックトレース」とは何ですか? 「完全にシンボリックなスタックトレース」との違いは何ですか?CoreDumpファイルの内容を表示するにはどうすればよいですか? (「猫」を試しましたが、きれいではありません)

13
komputes

Coredump.gzは、クラッシュしたプログラムからアクセス可能な(圧縮された)メモリです。これはバイナリファイルです。コアダンプは宝の山であり、あらゆる種類のプライベートデータをマイニングします。

コアダンプは、「gdb」を実行して表示できます。

gdb --core=mycoredump

もちろん、このコアに関連付けられたデバッグパッケージは引き続き必要です。

その後、次の方法でスタックトレースを生成できます。

(gdb) bt

パラメータ解決なしで、現在のスレッドのスタックトレースを生成する、または

(gdb) thread apply all bt full

パラメーター解決を使用して、コアダンプ内のすべてのスレッドのスタックトレースを生成します。

スタックトレースと完全なスタックトレースは、プログラム内の制御フローを示します。 Pythonの場合、スタックトレースの一番上に最も古い呼び出しが表示され、一番下に最新のものが表示されます。他のほとんどすべてについては、一番上が最新の呼び出しで、一番下が最も古い呼び出しです。

完全なスタックトレースは、フローだけでなく、パラメーターの値も表示します。これは通常、プライベートデータを検索する場所です。たとえば、「Password」というパラメーターと「MySecretPassword」という値を持つ「validatePassword」という関数が表示されるとします...

スタックトレースは通常、デバッグパッケージがインストールされている場合にのみ役立ちます(スタックフレームを簡単に読み取れるものに解決できるようにするため)。スタックトレースの分析には、この特定のプログラムインスタンスのビルドに使用されたソースが必要です。

15
hggdh