Solaris モジューラデバッガ

はじめに

モジューラデバッガ (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 コマンドのリファレンスが記載されています。

関連マニュアルと論文

以下に、参考となる関連マニュアルと論文を記載します。


注 -

このマニュアルでは、"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 のアドレス空間でも動作します。このマニュアルに記載されている情報は、プラットフォームとアドレス空間のどちらにも適応しています。ただし、特に指定された章、節、項目、注、図表、例、コード例などは除きます。


Sun のマニュアルの注文方法

専門書を扱うインターネットの書店 Fatbrain.com から、米国 Sun MicrosystemsTM, Inc. (以降、SunTM とします) のマニュアルをご注文いただけます。

マニュアルのリストと注文方法については、http://www1.fatbrain.com/documentation/sun の Sun Documentation Center をご覧ください。

Sun のオンラインマニュアル

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-DControl キーを押したまま D キーを押すことを意味します。

コマンド例のシェルプロンプト

以下の表に、C シェル、Bourne シェル、および Korn シェル用の、デフォルトのシステムプロンプトとスーパーユーザープロンプトを示します。

表 P-2 シェルプロンプト

シェル 

プロンプト 

 C シェルプロンプトmachine_name%
 C シェルスーパーユーザー プロンプトmachine_name#
 Bourne シェルおよび Korn シェルプロンプト$
 Bourne シェルおよび Korn シェルスーパーユーザー プロンプト#
 MDB プロンプト>