Linux では、コアとはデバッグ情報が付加されたメモリ イメージであり、Linux でプログラムが終了または異常終了した場合、プログラム実行時のメモリやレジスタを含むコア ファイルを解析に使用します。 、スタックポインタやその他の情報、形式はELFであり、プログラムの作業の現在のステータスがファイルにダンプされていることがわかります。
#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。
Linux におけるコアとは何ですか?
Linux でのコア ファイルの使用方法の詳細な説明
プログラムがログを残さずに異常終了する場合があります。このとき、コード ファイルを分析に使用できます。プログラムの動作を記録します。メモリ、レジスタ、スタック ポインタ、その他の情報
コア ファイル:
通常、Linux でプログラムが終了または異常終了した場合、解析にコア ファイルを使用します。プログラムのランタイムが含まれている メモリ、レジスタ、スタックポインタなどの情報がELF形式で記述されている プログラムの現在の状態がファイルにダンプされていることが分かる このファイルをツールで解析することで、対応するプログラムを見つけることができるプログラムが異常終了または終了したときのスタック呼び出しやその他の情報を提供し、問題解決の支援を提供します。
コア ファイルのデバッグを使用する
生成メソッド
現在のコア ファイルのステータスを表示する
$ ulimit -a ... -c: core file size (blocks) 0 # 关闭状态 ...
Open 生成スイッチ
ulimit -c unlimited ulimit -a ... -c: core file size (blocks) unlimited ...
は、コア ファイルのサイズを制限します。単位はブロックです。通常、1 ブロック = 512 バイトです。設定が小さすぎると、ファイルが生成されない可能性があります。
$ ulimit -c 1024 $ ulimit -a ... -c: core file size (blocks) 1024 ...
生成スイッチをオフにします
ulimit -c 0 ulimit -a ... -c: core file size (blocks) 0 ...
コア ファイルに対する上記の操作は現在のみ有効です。永続的に有効にする必要がある場合は、対応する操作を /etc/profile
に書き込む必要があります。生成パス
コア ファイルはデフォルトでプログラムの作業ディレクトリに生成されます。生成パスは設定できます。対応するディレクトリには十分なスペースと書き込み権限があります。
echo /MyCoreDumpDir/core.%e.%p > /proc/sys/kernel/core_pattern
名前付けに使用されるパラメータ リスト
%p - insert pid into filename # 添加 pid %u - insert current uid into filename # 添加当前 uid %g - insert current gid into filename # 添加当前 gid %s - insert signal that caused the coredump into the filename # 添加导致产生 core 的信号 %t - insert UNIX time that the coredump occurred into filename # 添加 core 文件生成时的 unix 时间 %h - insert hostname where the coredump happened into filename # 添加主机名 %e - insert coredumping executable name into filename # 添加命令名
/proc/sys/kernel/core_uses_pid このファイルの値が 1 の場合、 %p が構成されている場合は常に、最終的に生成されたコア ファイルに pid
デバッグ メソッド
gdb を使用してコア ファイルをデバッグできます。コンパイル時の g オプション。
$ gdb a.out ... (gdb) core-file core ... (gdb) bt ...
PC 上の組み込みデバイスによって生成されたコア ファイルをデバッグする必要がある場合は、対応するオプションを選択する必要があります。プラットフォームの gdb ツールで、シンボル ファイルの場所を設定します。 gdb を入力した後
$ xxx-xxx-gdb a.out ... (gdb) solib-search-path xxx.so:xxx.so ... (gdb) core-file core ... (gdb) bt ...
関連する推奨事項:「Linux ビデオ チュートリアル 」
以上がLinux におけるコアとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。