3

ELF コア ダンプ ファイルを手動で生成する方法を探しています。

プログラムから RAM ダンプがあり、レジスタ情報などを取得することもできます。

このデータを使用して、プログラムがクラッシュしたときに Linux カーネルによって生成されるものと同様の ELF コア ダンプ ファイルを作成したいと思います。目標は、プラットフォーム用に特別に作成された GDB を使用してこのコア ダンプを分析することです。

コア ダンプの仕様または詳細な形式を探していましたが、必要なものが見つかりませんでした。

  • コア ダンプ ファイルにはどのセクションが必要ですか?
  • それらはどのように ELF コンテナに編成されますか?
  • バイナリ RAM ダンプ (+ レジスタ値) からコア ダンプのようなファイルにするにはどうすればよいですか。

これはできればCで行う必要があります.libelfライブラリを使用してファイルを作成できると思いましたが、そのファイルに何をどの形式で入れるかに関する関連情報が見つからなかったので、手がかり、リンク、またはアドバイス歓迎されます。

注 : これは、例外を発生させることではなく、カーネルによってジョブが実行されます。それは可能ですが、自分で RAM を収集し、手動でデータを elf コア ダンプに登録する必要があります。

ありがとう !

4

1 に答える 1

5

ELF コア ダンプ ファイルを手動で生成する方法を探しています。

Google elf userspace coredumperを使用するだけで、まさにそれを行います。

ソフトウェアに直接実装するのではなく、コア ダンプを作成したい

それを行うことができる既存のプログラム (私が知っている) はありません。おそらく、ゼロから作成するか、他のプログラムを適応させる必要があります。

ユーザー空間からコア ダンプを書き込むことができるプログラムは 2 つあります。上記のユーザー空間のコア ダンパーと、GDB (gcoreコマンド経由) です。Google コアダンパーを適応させることは、GDB を適応させるよりもはるかに簡単だと思います。

ゼロから作成する場合でも、Google コアダンパーのソースを読んで、コアに何を書き込む必要があるかを判断できます。

于 2013-07-26T03:34:16.207 に答える