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] などの) ヘルパープログラムに渡されて処理されます。コアダンプは普通のユーザーにとってはあまり意味をなしませんが、開発者がユーザーにコアダンプの提出を要求することがあります。問題を再現することが難しいような場合、クラッシュ時のプログラムの状態を検死する手段としてコアダンプは有用です。 == 自動的なコアダンプの無効化 == コアダンプの自動生成を無効化する理由としては以下のようなことが考えられます: * パフォーマンス: メモリの消費が激しいプロセスのコアダンプを生成するとき、システムリソースが浪費され、メモリの消去が遅延します。 * ディスク容量: 圧縮されない場合、コアダンプはメモリの使用量と同じ分だけ、あるいはそれ以上のディスク容量を消費します。 * セキュリティ: コアダンプは基本的に root しか読みことができないものですが、クラッシュの後にディスクに書き込まれた機密情報 (パスワードや暗号鍵など) が含まれている可能性があります。 === sysctl を使う === [[sysctl]] を使って {{ic|kernel.core_pattern}} を設定することでコアダンプを無効化できます。以下のファイルを作成 [https://github.com/systemd/systemd/issues/659#issuecomment-328372788]: {{hc|/usr/lib/sysctl.d/51-coredump-disable.conf| 2=kernel.core_pattern={{!}}/bin/false}} 設定をいますぐ適用するには {{ic|systctl}} を使用: # sysctl -p /usr/lib/sysctl.d/51-coredump-disable.conf === systemd を使う === [[systemd]] はデフォルトで全てのプロセスのコアダンプを {{ic|/var/lib/systemd/coredump}} に生成します。{{ic|/etc/systemd/coredump.conf.d/}} ディレクトリに以下の内容で設定スニペットを作成することで生成しないようにすることが可能です [https://www.freedesktop.org/software/systemd/man/coredump.conf.html#Description][https://bbs.archlinux.org/viewtopic.php?id=214207]: {{hc|/etc/systemd/coredump.conf.d/custom.conf|2= [Coredump] Storage=none}} {{Note|{{ic|[Coredump]}} セクションの名前を記述するのを忘れてはいけません。セクションがないとオプションは無視されます: {{ic|systemd-coredump[1728]: [/etc/systemd/coredump.conf.d/custom.conf:1] Assignment outside of section. Ignoring.}}。}} それから systemd の設定をリロードしてください: # systemctl daemon-reload システム上にコアダンプを自動的に作成する他のプログラムが存在しなければ、上記の設定だけでユーザー空間のコアダンプを無効化できます。ただしメモリ上にコアダンプが生成され systemd-coredump が実行されるのは止まりません。 === Using PAM limits === The maximum core dump size for users logged in via [[PAM]] is enforced by [[limits.conf]]. Setting it to zero disables core dumps entirely. [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}} という名前のコアダンプファイルが生成されています。 === コアダンプの保存場所 === [[sysctl]] の {{ic|kernel.core_pattern}} は自動的に生成されたコアダンプの保存場所を決定します: $ cat /proc/sys/kernel/core_pattern |/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e {{ic|/usr/lib/sysctl.d/50-coredump.conf}} のデフォルト設定では、コアダンプはシステムログとして journald に全て送信されます。 {{Note|完全なディスク暗号化をしていない場合、上記したことはプログラムのメモリがディスクにそのまま書き出されるということを意味します。たとえスワップを暗号化していてもコアダンプから情報が漏洩してしまう可能性があります。}} journal からコアダンプを取得する方法は {{man|1|coredumpctl}} を見てください。 == コアダンプの確認 == 存在するダンプは ''coredumpctl'' を使って確認します: # coredumpctl list ダンプは一意に識別する必要があります。{{ic|PID}} や実行ファイルの名前、実行ファイルのパスや journalctl の述部で指定することができます (詳しくは {{ic|coredumpctl(1)}} や {{ic|journalctl(1)}} を参照)。コアダンプの詳細を確認するには: # coredumpctl info ''match'' "Signal" 列を注視することでクラッシュの原因の解明に役立ちます。''gdb'' を使ってバックトレースを確認してさらに細かい解析をすることも可能です: # coredumpctl gdb ''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
(
ソースを閲覧
)
コアダンプ
に戻る。
検索
検索
コアダンプのソースを表示
話題を追加