Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
コアダンプのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
コアダンプ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:開発]] [[Category:セキュリティ]] [[en:Core dump]] [[wikipedia:ja:コアダンプ|コアダンプ]]とは突然プロセスが終了したときのプロセスのアドレス空間 (メモリ) を記録するファイルです。コアダンプは終了時に自動的に生成されるだけでなく、([[#コアダンプの作成|デバッガ]]などによって) 必要に応じて生成される場合もあります。コアダンプはプログラムのクラッシュに対する反応としてカーネルによって引き起こされ、([https://www.freedesktop.org/software/systemd/man/systemd-coredump.html systemd-coredump] などの) ヘルパープログラムに渡されて処理されます。コアダンプは普通のユーザーにとってはあまり意味をなしませんが、開発者がユーザーにコアダンプの提出を要求することがあります。問題を再現することが難しいような場合、クラッシュ時のプログラムの状態を検死する手段としてコアダンプは有用です。 {{Warning|コアダンプには機密データ(パスワードや暗号キーなど)が含まれている可能性があるため、信頼できる相手としか共有しないでください。}} == 自動的なコアダンプの無効化 == コアダンプの自動生成を無効化する理由としては以下のようなことが考えられます: * パフォーマンス: メモリの消費が激しいプロセスのコアダンプを生成するとき、システムリソースが浪費され、メモリの消去が遅延します。 * ディスク容量: 圧縮されない場合、コアダンプはメモリの使用量と同じ分だけ、あるいはそれ以上のディスク容量を消費します。 * セキュリティ: コアダンプは基本的に root しか読みことができないものですが、クラッシュの後にディスクに書き込まれた機密情報 (パスワードや暗号鍵など) が含まれている可能性があります。 === sysctl を使う === [[sysctl]] を使って {{ic|kernel.core_pattern}} を設定することでコアダンプを無効化できます。以下のファイルを作成してください: {{hc|/etc/sysctl.d/50-coredump.conf|2= kernel.core_pattern=/dev/null }} 設定を今すぐ適用するには、{{ic|sysctl}} を使用してください: # sysctl -p /etc/sysctl.d/50-coredump.conf === systemd を使う === [[systemd]] はデフォルトで全てのプロセスのコアダンプを {{ic|/var/lib/systemd/coredump}} に生成します。{{ic|/etc/systemd/coredump.conf.d/}} ディレクトリに以下の内容で設定スニペットを作成することで生成しないようにすることが可能です。 (こちらを参照 {{man|5|coredump.conf|DESCRIPTION}}, [https://bbs.archlinux.org/viewtopic.php?id=214207]): {{hc|/etc/systemd/coredump.conf.d/custom.conf|2= [Coredump] Storage=none ProcessSizeMax=0}} {{Note|{{ic|[Coredump]}} セクション名を忘れずに含めてください。そうしないと、このオプションは無視されます。}} それから systemd の設定をリロードしてください: # systemctl daemon-reload 参照 {{man|8|systemd-coredump|Disabling coredump processing}} === PAM limits を使う === [[PAM]] でログインしたユーザーの最大コアダンプサイズは [[limits.conf]] によって強制されます。これをゼロにすると、コアダンプが完全に無効になります。[https://www.cyberciti.biz/faq/linux-disable-core-dumps/] {{hc|/etc/security/limits.conf| * hard core 0}} === ulimit を使う === コアダンプの上限容量は ulimit によって決まります。ulimit をゼロに設定すればコアダンプは完全に無効化されます [http://www.cyberciti.biz/faq/linux-disable-core-dumps/]: {{hc|/etc/security/limits.conf| * hard core 0}} == コアダンプの作成 == 任意のプロセスでコアダンプを生成したい場合は、まず {{Pkg|gdb}} パッケージを[[インストール]]してください。そして実行しているプロセスの PID を確認してください。例えば ''pgrep'' を使って: {{hc|1=$ pgrep -f ''firefox''|2= 2071 firefox }} 確認されたプロセスにアタッチ: $ gdb -p 2071 そして {{ic|(gdb)}} プロンプトで以下を実行: (gdb) generate-core-file Saved corefile core.2071 (gdb) quit 上記の例では {{ic|core.2071}} という名前のコアダンプファイルが生成されています。 === コアダンプの保存場所 === {{ic|kernel.core_pattern}} [[sysctl]] は自動的にコアダンプの保存先を決定します。デフォルトでは、コアダンプは ''systemd-coredump'' に送信されます。これは {{ic|/etc/systemd/coredump.conf}} で設定できます。デフォルトでは、すべてのコアダンプは {{ic|/var/lib/systemd/coredump}} に保存され ({{ic|1=Storage=external}} のため)、{{ic|zstd}} で圧縮されます。({{ic|1=Compress=yes}} の場合) さらに、ストレージのさまざまなサイズ制限を設定できます。 {{Note|{{ic|kernel.core_pattern}} のデフォルト値は、{{ic|/usr/lib/sysctl.d/50-coredump.conf}} で設定されます。このファイルは、通常の {{man|5|sysctl.d}} ルールに従って別の設定を使用するようにマスクまたはオーバーライドされる場合があります。}} journal からコアダンプを取得するには、{{man|1|coredumpctl}} を参照してください。 == コアダンプの確認 == ''coredumpctl'' を使用して、対応するダンプを見つけます。通常のユーザーは、プロセスのコアダンプを管理するための特別な権限がなくても ''coredumpctl'' を実行できることに注意してください。 # coredumpctl list === コアダンプファイルのクリーンアップ === {{ic|/var/lib/systemd/coredump/}} に保存されているコアダンプファイルは、{{ic|systemd-tmpfiles --clean}} によって自動的にクリーンアップされます。これは、{{ic|systemd-tmpfiles-clean.timer}} によって毎日トリガーされます。コアダンプは少なくとも 3 日間保持されるように設定されています。{{ic|systemd-tmpfiles --cat-config}} を参照してください。 == コアダンプの分析 == まず、関連するダンプを一意に特定する必要があります。これは{{ic|PID}}、実行ファイル名、実行ファイルへのパス、[[journalctl]] 述語を指定することで可能です (詳細は {{man|1|coredumpctl}} と {{man|1|journalctl}} を参照) コアダンプの詳細を見るには # coredumpctl info ''match'' クラッシュの原因を特定するのに役立つ "Signal" 行に注目してください。分析では、通常、デバッガー (デフォルトでは {{man|1|gdb}}) を使用してバックトレースを検査します。 # coredumpctl debug ''match'' ''gdb'' が開始されたら、{{ic|bt}} コマンドを使用してバックトレースを出力します。 (gdb) bt 多くの場合、出力には、欠落しているデバッグ シンボルのプレースホルダーとして疑問符が含まれます。トレースの取得方法については、[[デバッグ/トレースを取得]] を参照してください。 == 参照 == * [http://lcamtuf.coredump.cx/afl/ american fuzzy lop] - カーネルやプログラムのテストを自動化するツール * [https://lwn.net/Articles/637151/ Filesystem fuzzing] - ファイルシステムのバグをテストする LWN の記事
このページで使用されているテンプレート:
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Warning
(
ソースを閲覧
)
コアダンプ
に戻る。
検索
検索
コアダンプのソースを表示
話題を追加