1. ホーム
  2. linux

[解決済み] コアダンプファイル形式

2022-02-14 15:49:33

質問事項

私は、あるプロジェクトのためにカスタムコアダンプを処理するアプリケーションを書きました。私は '/proc/sys/kernel/core_pattern'を変更して私のダンプハンドラを呼び出し、それが正常に呼び出されました。

さて、問題はコアダンプをgdbで認識可能なファイルに保存することです。現在、私のダンプハンドラーはSTDINからダンプを読み込み、ファイル 'core.dump' に保存しています。このコアダンプをgdbで読み込もうとすると、エラーが発生します。

(gdb) ... is not a core dump: File format not recognized

標準的なコアダンプに対して 'file' コマンドを実行すると、次のような結果が得られます。

core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './dump_gen'

また、カスタム生成ダンプの場合、'file' で以下のようになります。

core.dump: data

どなたか、gdbで使用できるように、core-dumpを正しく書く方法を教えていただけませんか?

追記:標準のコアダンプファイルは使いたくありません。

どのように解決するのですか?

コアファイルにすべてのデータを書き込んでいないのでは?

簡単なスクリプトを作成し、それを実行可能にして、そのスクリプトにコアパターンを設定します。

#!/bin/sh
cat > /tmp/core.$$

ここで、コアファイルを生成します(例えば sleep 1243 を押して ctrl+\ ) で、動作するはずです。

今、私のシステムで自分でテストしてみましたが、問題なく動きました。