Linuxカーネルは初めてです。CPUのパワーアップから、完全なフローをブラウズする方法をさまよっています。BIOS/ROM コードの基本的な考え方。
完全なカーネルをデバッグするためのツールを入手できますか? または生コードのブラウジングが望ましいですか?
Linuxカーネルは初めてです。CPUのパワーアップから、完全なフローをブラウズする方法をさまよっています。BIOS/ROM コードの基本的な考え方。
完全なカーネルをデバッグするためのツールを入手できますか? または生コードのブラウジングが望ましいですか?
次のツールは、Linux カーネルのデバッグに役立つ場合があります
Dynamic Probesは、IBM が開発した Linux 用の人気のあるデバッグ ツールの 1 つです。このツールを使用すると、ユーザー空間とカーネル空間の両方で、システムのほぼすべての場所に「プローブ」を配置できます。プローブは、制御が特定のポイントに達したときに実行されるコード (特殊なスタック指向の言語で記述された) で構成されます。以下にリストされているdprobes / kprobes に関するリソース
Linux Trace Toolkitは、カーネル パッチと、カーネル内のイベントのトレースを可能にする一連の関連ユーティリティです。トレースにはタイミング情報が含まれており、一定期間に何が起こったのかをある程度完全に把握できます。LTT、LTT Viewer、LTT Next Generationのリソース
MEMWATCHは、オープン ソースのメモリ エラー検出ツールです。gcc ステートメントで MEMWATCH を定義し、コードにヘッダー ファイルを追加することで機能します。これにより、メモリリークとメモリ破損を追跡できます。MEMWATCHに関するリソース
ftraceは、Linux カーネルの優れたトレース フレームワークです。ftrace は、カーネルの内部操作をトレースします。このツールは、2.6.27 の Linux カーネルに含まれています。さまざまなトレーサー プラグインを使用して、ftrace はさまざまな静的トレースポイント (スケジュール イベント、割り込み、メモリ マップ I/O、CPU 電源状態の遷移、ファイル システムや仮想化に関連する操作など) をターゲットにすることができます。また、カーネル関数呼び出しの動的追跡が利用可能で、オプションでグロブを使用して関数のサブセットに制限でき、呼び出しグラフを生成してスタック使用を提供する可能性があります。https://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_rostedt.pdfで ftrace の優れたチュートリアルを見つけることができます
ltraceは Linux のデバッグ ユーティリティであり、ユーザー空間アプリケーションが共有ライブラリに対して行った呼び出しを表示するために使用されます。このツールを使用して、任意の動的ライブラリ関数呼び出しをトレースできます。実行されたプロセスによって呼び出された動的ライブラリ呼び出しと、そのプロセスによって受信されたシグナルを傍受して記録します。また、プログラムによって実行されるシステム コールをインターセプトして出力することもできます。
KDBは、Linux カーネルのカーネル内デバッガーです。KDB は単純なシェル スタイルのインターフェイスに従います。これを使用して、メモリ、レジスタ、プロセス リスト、dmesg を検査し、特定の場所で停止するようにブレークポイントを設定することもできます。KDB を介して、ブレークポイントを設定し、いくつかの基本的なカーネル実行制御を実行できます (ただし、KDB はソース レベルのデバッガーではありません)。KDB に関するいくつかの便利なリソース
KGDBは、Linux カーネルのソース レベルのデバッガーとして使用することを目的としています。これは Linux カーネルをデバッグするために gdb と共に使用されます。kgdb を使用するには、2 台のマシンが必要です。これらのマシンの 1 つは開発マシンで、もう 1 つはターゲット マシンです。デバッグ対象のカーネルは、ターゲット マシン上で実行されます。アプリケーション開発者が gdb を使用してアプリケーションをデバッグするのと同じように、gdb を使用してカーネルに「侵入」し、メモリ、変数を検査し、コール スタック情報を調べることができると期待されています。カーネル コードにブレークポイントを配置して、限定的な実行ステップを実行することができます。KGDB に関するいくつかの便利なリソース
まず、関連する質問Linux カーネルのライブ デバッグ、それがどのように行われ、どのツールが使用されているかを参照してください。. KDBまたはFtraceを使用してみてください。
Linux カーネルの全体の流れを理解したい場合は、 QEMUで Linux カーネルを実行すると、Linux の仕組みを簡単に学習できます。特に。実際のハードウェアなしで多くの CPU タイプをエミュレートできます。またはユーザーモード Linuxはどうですか?
このドキュメントは、QEMU でカーネルをデバッグするのに役立ちます。
追加するだけで、Linux カーネルはデバッグにはあまり適していません。Linus Torvalds はかつて、Linux でのカーネル デバッグのサポートに反対していると述べました。私は kdbg を使用しましたが、あまり便利ではありませんでした。