Solaris モジューラデバッガ

はじめに

モジューラデバッガ (MDB) は、SolarisTM オペレーティングシステム用の拡張性にすぐれた汎用デバッグツールです。『Solaris モジューラデバッガ』では、複雑なソフトウェアシステムをデバッグする MDB の使用方法について、特に、Solaris カーネル、関連するデバイスドライバおよびモジュールなどをデバッグする場合に使用可能な機能に重点を置いて説明します。さらに、このマニュアルには、MDB 言語構文、デバッガ機能、および MDB モジュールプログラミング API についてのリファレンスと解説も記載されています。


注 –

このリリースでは、SPARC® および x86 系列のプロセッサアーキテクチャー(UltraSPARC®、SPARC64、AMD64、Pentium、Xeon EM64T) をサポートします。サポートされるシステムについては、Solaris OS Hardware Compatibility Lists (http://www.sun.com/bigadmin/hcl) を参照してください。本書では、プラットフォームにより実装が異なる場合は、それを特記します。

本書では、「x86」という用語は AMD64 あるいは Intel Xeon/Pentium 製品系列と互換性のあるプロセッサを使用して製造された 32 ビットおよび 64 ビットシステムを意味します。サポートされるシステムについては、Solaris OS Hardware Compatibility Lists を参照してください。


対象読者

もしあなたが刑事で、犯罪の現場を捜査していると仮定した場合は、目撃者に会って、何が起こったか、だれかを見たかと尋ねるでしょう。しかし、目撃者がいない場合や、目撃証言が不十分な場合は、指紋を採取したり、法廷証拠を集めたりしようと考えるでしょう。また、事件の解決を図るためにその証拠を DNA 鑑定することもあるでしょう。ソフトウェアプログラムの障害も、しばしば、これと同様のカテゴリに分類される場合があります。つまり、ソースレベルのデバッグ用ツールで解決できる問題もあれば、誤りを判断して訂正するために、低レベルのデバッギング機能、コアファイルの検査、およびアセンブリ言語の知識が必要な問題もあります。MDB は、このような二次段階の問題分析を支援するよう設計されたデバッグ用ソフトウェアです。

刑事が、顕微鏡や DNA の証拠をすべての事件に対して必要としないのと同様に、MDB が、すべての障害で必要であるとは限りません。しかし、オペレーティングシステムのように、複雑で低レベルなソフトウェアシステムをプログラミングする場合は、MDB が必要になることがしばしばあります。その結果、これらの障害診断を支援するために、MDB は、ユーザーが独自のカスタム診断ツールを構築できるようなデバッギングのフレームワークとして設計されています。また、アセンブリ言語レベルでプログラムの状態を分析できるように、MDB では、強力な組み込みコマンドも用意しています。

アセンブリ言語のプログラミングやデバッギングに慣れていない場合は、「関連マニュアルと論文」を参照してください。役立つ資料が記載されています。

また、プログラムをデバッグしている途中で、そのプログラムのソースコードと、それに対応するアセンブリ言語コードとの関係を明らかにするために、プログラム中の対象部分のさまざまな機能を逆アセンブルする必要もあるでしょう。Solaris カーネルソフトウェアをデバッグするために MDB を使用する場合は、第 8 章「カーネルデバッギングモジュール」第 9 章「カーネルメモリーアロケータを使用するデバッギング」を熟読してください。これらの章では、Solaris カーネルソフトウェアをデバッグするために必要な MDB コマンドと機能について詳しく説明しています。

内容の紹介

第 1 章「モジューラデバッガの概要」では、モジューラデバッガの概要を説明します。この章の対象読者はすべてのユーザーです。

第 2 章「デバッガの概念」では、MDB のアーキテクチャーを説明し、このデバッガについて、マニュアル全体で使用されている概念の用語について説明します。この章の対象読者はすべてのユーザーです。

第 3 章「言語構文」では、MDB 言語の構文、演算子、および評価規則について説明します。この章の対象読者はすべてのユーザーです。

第 4 章「対話」では、MDB の対話型コマンド行編集機能と出力ページャーについて説明します。この章の対象読者はすべてのユーザーです。

第 5 章「組み込みコマンド」では、常に使用可能な、組み込みのデバッガコマンドセットについて説明します。この章の対象読者はすべてのユーザーです。

第 6 章「実行制御」では、実行中のプログラムの実行を制御するための MDB の機能について説明します。この章の対象読者は、アプリケーション開発者とデバイスドライバ開発者です。実行制御機能は、システム管理者にも役立つ場合があります。

第 7 章「カーネル実行制御」では、kmdb 専用の実行中のオペレーティングシステムカーネルの実行を制御するための MDB 機能について説明します。この章の対象読者は、オペレーティングシステムカーネルの開発者とデバイスドライバ開発者です。

第 8 章「カーネルデバッギングモジュール」では、Solaris カーネルをデバッグする場合に使用する、読み込み可能なデバッガコマンドについて説明します。この章の対象読者は、Solaris カーネルのクラッシュダンプを検査するユーザーや、カーネルソフトウェアの開発者です。

第 9 章「カーネルメモリーアロケータを使用するデバッギング」では、Solaris カーネルメモリーアロケータのデバッギング機能と、これらの機能を活用するために用意された MDB コマンドについて説明します。この章の対象読者は、上級プログラマとカーネルソフトウェアの開発者です。

第 10 章「モジュールプログラミング API」では、読み込み可能なデバッガモジュールを作成する機能について説明します。この章の対象読者は、上級プログラマと、MDB のカスタムデバッギングを開発するソフトウェア開発者です。

付録 A 「オプション」には、MDB コマンド行のオプションについてのリファレンスが記載されています。

付録 B 「注意」には、デバッガの使用に関連する警告と注意が記載されています。

付録 C 「 adb および kadb からの移行」には、adb コマンドと、それに相当する MDB コマンドのリファレンスが記載されています。adb コマンドは、mdb によって実装されます。

付録 D 「crash からの移行」には、crash コマンドと、それに相当する MDB コマンドのリファレンスが記載されています。crash コマンドは Solaris にはもう存在しません。

関連マニュアルと論文

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

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

docs.sun.comTM では Sun が提供しているオンラインマニュアルを参照することができます。マニュアルのタイトルや特定の主題などをキーワードとして、検索を行うこともできます。このサイトの URL は http://docs.sun.com です。

表記上の規則

このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。

表 P–1 表記上の規則

字体または記号 

意味 

例 

AaBbCc123

コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コード例を示します。 

.login ファイルを編集します。

ls -a を使用してすべてのファイルを表示します。

system%

AaBbCc123

ユーザーが入力する文字を、画面上のコンピュータ出力と区別して示します。 

system% su

password:

AaBbCc123

変数を示します。実際に使用する特定の名前または値で置き換えます。 

ファイルを削除するには、rm filename と入力します。

『 』 

参照する書名を示します。 

『コードマネージャ・ユーザーズガイド』を参照してください。 

「 」 

参照する章、節、ボタンやメニュー名、強調する単語を示します。 

第 5 章「衝突の回避」を参照してください。 

この操作ができるのは、「スーパーユーザー」だけです。 

枠で囲まれたコード例で、テキストがページ行幅を超える場合に、継続を示します。 

 


sun% grep `^#define \

  XV_VERSION_STRING'

コード例は次のように表示されます。

[ ] は省略可能な項目を示します。上記の例は、filename は省略してもよいことを示しています。

| は区切り文字 (セパレータ) です。この文字で分割されている引数のうち 1 つだけを指定します。

キーボードのキー名は英文で、頭文字を大文字で示します (例: Shift キーを押します)。ただし、キーボードによっては Enter キーが Return キーの動作をします。

ダッシュ (-) は 2 つのキーを同時に押すことを示します。たとえば、Ctrl-DControl キーを押したまま D キーを押すことを意味します。