Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

mdb モジュラーデバッガの使用

    mdb(1) モジュラーデバッガは、次のタイプのファイルに適用できます。

  • ライブのオペレーティングシステムコンポーネント

  • オペレーティングシステムのクラッシュダンプ

  • ユーザープロセス

  • ユーザープロセスのコアダンプ

  • オブジェクトファイル

mdb デバッガは、カーネルの問題を解析するための高度なデバッグサポートを提供します。このセクションでは mdb 機能の概要を説明します。mdb の完全な説明については、Oracle Solaris Modular Debugger Guideを参照してください。

mdb を使用してライブカーネル状態を変更することも可能ですが、mdb には、kmdb で提供されているカーネル実行制御の機能がありません。このため、実行時デバッグには kmdb をお勧めします。mdb デバッガは通常、静的な状況で使用されます。


注 - mdb のプロンプトは > です。

モジュラーデバッガの使用開始

mdb デバッガにはデバッガモジュールを実装するための拡張プログラミング API が用意されているため、ドライバ開発者はカスタムのデバッグサポートを実装できます。mdb デバッガには、コマンド行編集、コマンド履歴、出力ページャー、オンラインヘルプなど、多数のユーザビリティー機能も用意されています。


注 -  AFB マクロは今後使用しないでください。その機能の大部分が、mdb の dcmd に置き換えられました。

mdb デバッガには一連の豊富なモジュールや dcmd が用意されています。これらのツールを使用すると、Oracle Solaris カーネル、任意の関連モジュール、およびデバイスドライバをデバッグできます。これらの機能を使用すると、次のようなタスクを実行できます。

  • 複雑なデバッグクエリーを構築する

  • 特定のスレッドによって割り当てられたすべてのメモリーを検出する

  • カーネル STREAM のビジュアル画像を出力する

  • 特定のアドレスが参照している構造タイプを判定する

  • カーネルの中でリークしているメモリーブロックを検出する

  • スタックトレースを検出するためのメモリーを分析する

  • カスタマイズされた操作を作成するために、複数の dcmd を組み合わせて dmod と呼ばれるモジュールを構築する

使用を開始するには、次の例に示すように、クラッシュディレクトリに移動して mdb と入力し、システムクラッシュダンプを指定します。

使用例 23-7  クラッシュダンプに対する mdb の呼び出し
% cd /var/crash/testsystem
% ls
bounds     unix.0    vmcore.0
% mdb unix.0 vmcore.0
Loading modules: [ unix kited genunix ufs_log ip SBA s1394 cc nfs ]
> ::status
debugging crash dump vmcore.0 (64-bit) from test system
operating system: 5.10 Generic (sun4u)
panic message: zero
dump content: kernel pages only

mdb からの応答として > プロンプトが返されたら、コマンドを実行できます。

ライブシステム上の実行中のカーネルを検査するには、次のようにシステムプロンプトから mdb を実行します。

使用例 23-8  実行中のカーネルに対する mdb の呼び出し
# mdb -k
Loading modules: [ unix kited genunix ufs_log ip SBA s1394 Pym cc IPX nfs ]
> ::status
debugging live kernel (64-bit) on test system
operating system: 5.10 Generic (sun4u)