モジューラデバッガ (MDB) は、SolarisTM オペレーティング環境で使用する新しい汎用デバッグ用ツールです。MDB の主な特長は、その拡張性にあります。『Solaris モジューラデバッガ』では、複雑なソフトウェアシステムをデバッグする MDB の使用方法について、特に、Solaris カーネル、関連するデバイスドライバ、モジュールなどをデバッグする場合に使用可能な機能に重点を置いて説明します。さらに、このマニュアルには、MDB 言語構文、デバッガ機能、および MDB モジュールプログラミング API についてのリファレンスと解説も記載されています。
もしあなたが刑事で、犯罪の現場を捜査していると仮定した場合は、目撃者に会って、何が起こったか、誰かを見たかと尋ねるでしょう。しかし、目撃者がいない場合や、目撃証言が不十分な場合は、指紋を採取したり、法廷証拠を集めたりしようと考えるでしょう。また、事件の解決を図るためにその証拠を DNA 鑑定することもあるでしょう。ソフトウェアプログラムの障害も、しばしば、これと同様のカテゴリに分類される場合があります。つまり、ソースレベルのデバッグ用ツールで解決できる問題もあれば、誤りを判断して訂正するために、低レベルのデバッギング機能、コアファイルの検査、およびアセンブリ言語の知識が必要な問題もあります。MDB は、このような二次段階の問題分析を支援するよう設計されたデバッグ用ソフトウェアです。
刑事が、顕微鏡や DNA の証拠をすべての事件に対して必要としないのと同様に、MDB が、すべての障害で必要であるとは限りません。しかし、オペレーティングシステムのように、複雑で低レベルなソフトウェアシステムをプログラミングする場合は、MDB が必要になることがしばしばあります。その結果、これらの障害診断を支援するために、MDB は、ユーザーが独自のカスタム診断ツールを構築できるようなデバッギングのフレームワークとして設計されています。また、アセンブリ言語レベルでプログラムの状態を分析できるように、MDB では、強力な組み込みコマンドも用意しています。
アセンブリ言語のプログラミングやデバッギングに慣れていない場合は、「関連マニュアルと論文」を参照してください。役立つ資料が記載されてます。
また、プログラムをデバッグしている途中で、そのプログラムのソースコードと、それに対応するアセンブリ言語コードとの関係を明らかにするために、プログラム中の対象部分のさまざまな機能を逆アセンブルする必要もあるでしょう。Solaris カーネルソフトウェアをデバッグするために MDB を使用する場合は、第 5 章「カーネルデバッギングモジュール」と第 6 章「カーネルメモリーアロケータを使用するデバッギング」を熟読してください。これらの章では、Solaris カーネルソフトウェアをデバッグするために必要な MDB コマンドと機能について詳しく説明しています。
第 1 章「モジューラデバッガの概要」では、モジューラデバッガの概要を説明します。この章の対象読者はすべてのユーザーです。
第 2 章「デバッガの概念」では、MDB のアーキテクチャを説明し、このデバッガについて、マニュアル全体で使用されている概念の用語について説明します。この章の対象読者はすべてのユーザーです。
第 3 章「言語構文」では、MDB 言語の構文、演算子、および評価規則について説明します。この章の対象読者はすべてのユーザーです。
第 4 章「組み込みコマンド」では、常に使用可能な、組み込みのデバッガコマンドセットについて説明します。この章の対象読者はすべてのユーザーです。
第 5 章「カーネルデバッギングモジュール」では、Solaris カーネルをデバッグする場合に使用する、読み込み可能なデバッガコマンドについて説明します。この章の対象読者は、Solaris カーネルのクラッシュダンプを検査するユーザーや、カーネルソフトウェアの開発者です。
第 6 章「カーネルメモリーアロケータを使用するデバッギング」では、Solaris カーネルメモリーアロケータのデバッギング機能と、これらの機能を活用するために用意された MDB コマンドについて説明します。この章の対象読者は、上級プログラマとカーネルソフトウェアの開発者です。
第 7 章「モジュールプログラミング API」では、読み込み可能なデバッガモジュールを作成する機能について説明します。この章の対象読者は、上級プログラマと、MDB のカスタムデバッギングを開発するソフトウェア開発者です。
付録 A 「オプション」 には、MDB コマンド行のオプションについてのリファレンスが記載されています。
付録 B 「crash からの移行」 には、crash(1M) コマンドと、それに相当する MDB コマンドのリファレンスが記載されています。
以下に、参考となる関連マニュアルと論文を記載します。
『UNIX Internals: The New Frontiers』、Uresh Vahalia 著、Prentice Hall 発行、1996、ISBN 0-13-101908-2
『The SPARC Architecture Manual, Version 9』、Prentice Hall 発行、1998、ISBN 0-13-099227-5
『The SPARC Architecture Manual, Version 8』、Prentice Hall 発行、1994、ISBN 0-13-825001-4
『Pentium Pro Family Developer's Manual, Volumes 1-3』、Intel Corporation 発行、1996、ISBN 1-55512-259-0 (Volume 1)、ISBN 1-55512-260-4 (Volume 2)、ISBN 1-55512-261-2 (Volume 3)
『The Slab Allocator: An Object-Caching Kernel Memory Allocator』、Jeff Bonwick 著、Proceedings of the Summer 1994 Usenix Conference 発行、1994、ISBN 9-99-452010-5
『SPARC Assembly Language Reference Manual』、Sun Microsystems 発行、1998
『x86 Assembly Language Reference Manual』、Sun Microsystems 発行、1998
『Writing Device Drivers』、Sun Microsystems 発行、 2000
『STREAMS Programming Guide』、Sun Microsystems 発行、2000
『Solaris 64 ビット 開発ガイド』、Sun Microsystems 発行、2000
『リンカーとライブラリ』、Sun Microsystems 発行、2000
このマニュアルでは、"IA" という用語は、Intel 32-bit のプロセッサアーキテクチャを意味します。これには、Pentium、Pentium Pro、Pentium II、Pentium II Xeon、Celeron、Pentium III、Pentium III Xeon の各プロセッサ、および AMD と Cyrix が提供する互換マイクロプロセッサチップが含まれます。
Solaris オペレーティング環境は、プラットフォームである-SPARCTM と IA のハードウェア上で動作します。また、64-bit と 32-bit のアドレス空間でも動作します。このマニュアルに記載されている情報は、プラットフォームとアドレス空間のどちらにも適応しています。ただし、特に指定された章、節、項目、注、図表、例、コード例などは除きます。
専門書を扱うインターネットの書店 Fatbrain.com から、米国 Sun MicrosystemsTM, Inc. (以降、SunTM とします) のマニュアルをご注文いただけます。
マニュアルのリストと注文方法については、http://www1.fatbrain.com/documentation/sun の Sun Documentation Center をご覧ください。
http://docs.sun.com では、Sun が提供しているオンラインマニュアルを参照することができます。マニュアルのタイトルや特定の主題などをキーワードとして、検索をおこなうこともできます。
このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。
表 P-1 表記上の規則
字体または記号 |
意味 |
例 |
---|---|---|
AaBbCc123 |
コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コード例を示します。 |
.login ファイルを編集します。 ls -a を使用してすべてのファイルを表示します。 system% |
AaBbCc123 |
ユーザーが入力する文字を、画面上のコンピュータ出力と区別して示します。 |
system% su password: |
AaBbCc123 |
変数を示します。実際に使用する特定の名前または値で置き換えます。 |
ファイルを削除するには、rm filename と入力します。 |
『 』 |
参照する書名を示します。 |
『コードマネージャ・ユーザーズガイド』を参照してください。 |
「 」 |
参照する章、節、ボタンやメニュー名、強調する単語を示します。 |
第 5 章「衝突の回避」を参照してください。 この操作ができるのは、「スーパーユーザー」だけです。 |
¥ |
枠で囲まれたコード例で、テキストがページ行幅を超える場合に、継続を示します。 |
sun% grep `^#define ¥ XV_VERSION_STRING' |
ただし AnswerBook2 では、ユーザーが入力する文字と画面上のコンピュータ出力は区別して表示されません。
コード例は次のように表示されます。
[ ] は省略可能な項目を示します。上記の例は、filename は省略してもよいことを示しています。
| は区切り文字 (セパレータ) です。この文字で分割されている引数のうち 1 つだけを指定します。
キーボードのキー名は英文で、頭文字を大文字で示します (例: Shift キーを押します)。ただし、キーボードによっては Enter キーが Return キーの動作をします。
ダッシュ (-) は 2 つのキーを同時に押すことを示します。たとえば、Ctrl-D は Control キーを押したまま D キーを押すことを意味します。
以下の表に、C シェル、Bourne シェル、および Korn シェル用の、デフォルトのシステムプロンプトとスーパーユーザープロンプトを示します。
表 P-2 シェルプロンプト
シェル |
プロンプト |
---|---|
C シェルプロンプト | machine_name% |
C シェルスーパーユーザー プロンプト | machine_name# |
Bourne シェルおよび Korn シェルプロンプト | $ |
Bourne シェルおよび Korn シェルスーパーユーザー プロンプト | # |
MDB プロンプト | > |