ソフトウェアデバッグ技術(2) -- coredump_PHPの実装方法チュートリアル
ソフトウェアデバッグ技術(2)--コアダンプの実装方法
最近、アプリケーションソフトウェアがクラッシュしたときにダンプファイルを生成するように設定できることを職場で知りました。これがコアダンプです。アプリケーションのクラッシュでもカーネルのクラッシュでも、ダンプ機能は非常に実用的なテクノロジーです。この記事は、これら 2 つのテクノロジの実装方法を実装原理の観点から理解することを目的としています。まず、アプリケーションのコアダンプの実装方法を分析しましょう。どのような条件が転送をトリガーしますか?
この転送は、アプリケーションがこの信号を処理するときに実行され、その後実行が終了します。注意しなければならないことの 1 つは、ユーザーがこれらの致命的な信号用のカスタム ハンドラーをインストールした場合、転送は行われないということです。 OK、ここで 2 つのポイントがあります:
1. 致命的な信号の転送が開始されます。これらの信号には次のものが含まれます。
- 398 #define SIG_KERNEL_COREDUMP_MASK(
- 399 rt_sigmask(SIGQUIT)|rt_sigmask(SIGILL)|
- 400 rt_sigmask(SIGTRAP)|rt_sigmask(SIGAB) RT)|
- 401 rt_sigmask(SIGFPE)|rt_sigmask( SIGSEGV )|
- 402 rt_sigmask(SIGBUS)|rt_sigmask(SIGSYS)|
- 403 rt_sigmask(SIGXCPU)|rt_sigmask(SIGXFSZ)|
- 404 SIGEMT_MASK
- 2264if(ka->sa.sa_handler!=SIG_DFL){
- 2265/*ハンドラーを実行します。*/
- 2266 ksig->ka= * ka;
- 2267
- 2268if(ka->sa.sa_flags&SA_ONESHOT)
- 2269 ka->sa.sa_handler=SIG_DFL;
- 2270
- 2271 Break;/*ゼロ以外の署名者を返す"value*/
- 2272}
2338 proc_coredump_connector(current);
- 2339/*
-
2342*彼らの終焉。ここに到達する別の -
2343*スレッドとの競争に負けた場合、itsetgroup_exit_code -
2344*first と do_group_exitcallbelow は -
2345*その値を使用し、渡した値を無視します。 -
2346*/ -
234 7 do_coredump(&ksig->info); -
2348} - /proc/sys/kernel/print-fatal-signals
コアダンプの主な手順 - 実際、このアプリケーションをディスクに書き込むプロセスは非常に責任のあるものでなければなりません。ここでは、詳細な研究と分析のために、理論的な詳細の一部を後回しにする場合があります。ただし、ここではコアダンプに関する次の主要な処理プロセスを理解する必要があります。
1. コアダンプの前に、まずスレッド グループ内のすべてのスレッドが休止状態に入っているかどうかを確認します。コアダンプが必要な場合は、このプロセスのメモリ領域をコピーするときに、プロセス内の一部のスレッドがまだ実行中であり、メモリ領域を書き換えていることを確認する必要があります。 2. プロセスメモリをファイルに直接転送することについては何も特別なことはありません。ファイルを開いて書き込みを開始するだけです。 - 3. ユーザー空間スクリプトが作成され、いくつかの圧縮操作が実行される場合、ユーザー状態プロセスが開始され、カーネルとユーザー状態プロセスの間にパイプラインが確立されます。 kernel=======。 ===読み出し =========== ユーザーモード処理(圧縮) -----------書き込み--------> ファイル
-
最初のステップとして処理、カーネル プロセス グループ内のすべてのスレッドに kill シグナルを送信し、すべてのプロセスが実行されなくなるまで待機します。 2 番目のステップの処理は比較的単純ですが、興味がある場合は、コアダンプ ファイルの形式がどのようなものであるかをさらに調べることができます。 3 番目のステップは比較的複雑ですが、カーネルでパイプラインを確立し、コアダンプをパイプラインに書き込み、新しく作成されたプロセスのパイプラインのもう一方の端が に設定されます。標準入力。
シェル実行可能ファイルを作成できます
#!/bin/sh
execgzip->/root/$1.core.$2.gz
次に/proc/sys/kernel/core_patternに書き込みます
|/usr/sbin/core_helper%e%p

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T
