Compaq OpenVMS
デバッガ説明書


前へ 次へ 目次 索引


第 1 部
デバッガ概要

第 1 部では,デバッガの概要を説明します。


第 1 章
デバッガ概要

本章では OpenVMS デバッガのコマンド・インタフェースについて説明します。本章には次の内容が含まれています。

基本的なデバッグ・タスクについては,第 2 章 を参照してください。

1.1 デバッガの概要

OpenVMS デバッガは,実行時のプログラミング・エラーや論理エラーなどのバグの場所をつきとめるためのツールです。コンパイルとリンクには成功しても正常に実行されないプログラムに対してデバッガを使用します。このようなプログラムは,たとえば,不正な出力を行ったり,無限ループに陥ったり,途中で終了してしまいます。

OpenVMS デバッガを使用すると,プログラムを実行しながら会話形式でプログラムの動作をモニタし,操作することにより,プログラムのエラーを見つけることができます。デバッガ・コマンドを使用すると,次のことが可能です。

以上が基本的なデバッグ方法です。プログラム内のエラーを特定することができれば,ソース・コードを編集,コンパイル,リンクして,修正バージョンを実行することができます。

デバッガとそのドキュメントを使用していくうちに,デバッグには基本的な方法以外に様々な方法もあることが分かります。また,ユーザのニーズに合わせてデバッガをカスタマイズすることもできます。第 1.1.1 項 では,OpenVMS デバッガの機能の概要を説明します。

注意

カーネルとメイン・デバッガはグローバル・セクションを通じて通信します。メイン・デバッガは 65 ページ(VAX の場合)または 65 ページレット(Alpha の場合)のグローバル・セクション(どちらのプラットフォームでも 65*512 バイト)を通じて,最大 8 つのカーネル・デバッガと通信します。したがって,システム・パラメータ GBLPAGES と GBLSECTIONS の値を大きくしなければならないことがあります。たとえば,10 人のユーザがデバッガを同時に使用する場合には,デバッガは 10 個のグローバル・セクションを必要とし,全部で 650 グローバル・ページまたはページレットを使用します。

注意

各ユーザは,プログラムで必要とされる数のプロセスの他に,デバッガの追加サブプロセスを生成できるだけの十分な PRCLM クォータを必要とします。

BYTLM,ENQLM,FILLM,PGFLQUOTA はプールされるクォータです。次のように,デバッガ・サブプロセスを考慮して,これらのクォータの値を大きくする必要があります。

  • 各ユーザの ENQLM クォータは,少なくともデバッグするプロセスの数だけ大きくしなければならない。

  • 各ユーザの PGFLQUOTA を大きくしなければならない。ユーザの PGFLQUOTA が不十分な場合には,デバッガを起動することができなかったり,実行中に "virtual memory exceeded" というエラーが表示されることがある。

  • 各ユーザの BYTLM クォータと FILLM クォータを大きくしなければならない。デバッグする各イメージ・ファイル,対応するソース・ファイル,デバッガ入力ファイル,出力ファイル,ログ・ファイルを開くには,十分な BYTLM クォータと FILLM クォータが必要である。これらのクォータを大きくするには,SYS$SYSTEM:AUTHORIZE.EXE を実行して,SYSUAF.DAT のパラメータを調整する。

1.1.1 デバッガの機能

◆サポートしているプログラミング言語

VAX プロセッサでデバッガを使用する場合,次の各 VAX 言語で記述されたプログラムをデバッグすることができます。

Ada BASIC BLISS C
C++ COBOL DIBOL Fortran
MACRO-32 Pascal PL/I RPG II
SCAN      

Alpha プロセッサでデバッガを使用する場合,次の各 Compaq 言語で記述されたプログラムをデバッグすることができます。

Ada BASIC BLISS C
C++ COBOL Fortran MACRO-321
MACRO-64 Pascal PL/I  


1 MACRO-32 は AMACRO コンパイラでコンパイルしなければなりません。

デバッガは,サポートされている言語の構文,データ型,演算子,式,有効範囲規則,その他の構造を認識します。SET LANGUAGE コマンドを使用すると,デバッグ・セッションの途中で,1 つの言語から他の言語へとデバッグ・コンテキストを変更することができます。

◆シンボリック・デバッガ

デバッガはシンボリック・デバッガです。プログラムの記憶位置は,プログラムで使用するシンボル,つまり,変数名,ルーチン名,ラベルなどによって参照できます。また,必要に応じてメモリ・アドレスやマシン・レジスタを指定することもできます。

◆すべてのデータ型のサポート

デバッガは,整数型,浮動小数点型,列挙型,レコード型,配列型などのコンパイラが生成するすべてのデータ型を認識します。プログラム変数の値は,宣言されている型に従って表示されます。

◆柔軟なデータ形式

デバッガでは,さまざまなデータ形式やデータ型を入力したり,表示できます。プログラムのソース言語によって,データの入力と表示の省略時の形式が決定されます。しかし,必要に応じて他の形式も選択できます。

◆プログラム実行の開始と再開

プログラムがデバッガによって制御されているときに,GO コマンドまたは STEP コマンドを使用すると,プログラムの実行を開始したり,再開できます。GO コマンドを実行すると,プログラムは,指定したイベントが発生するまで実行されます(たとえば,PC が指定されたコード行になるか,変数が変更されるか,例外が通知されるか,プログラムが終了するなど)。STEP コマンドを使用すると,指定した数だけ命令またはソース・コード行を実行したり,プログラムが指定されたクラスの次の命令に到達するまで実行できます。

◆ブレークポイント

SET BREAK コマンドで ブレークポイント を設定すると,特定の記憶位置でプログラムの実行を中断してプログラムの現在の状態をチェックすることができます。記憶位置を指定する代わりに,特定の命令クラスによって実行を停止したり,ソース行の各行で実行を停止することもできます。また,例外やタスキング(マルチスレッド)イベントなどの特定のイベントに応じて実行を中断することもできます。

◆トレースポイント

SET TRACE コマンドで トレースポイント を設定すると,特定の記憶位置を通るプログラムの実行パスをモニタすることができます。トレースポイントが検出されると,デバッガはトレースポイントに達したことを報告してからプログラムの実行を続けます。SET BREAK コマンドと同様に,例外イベントやタスク(マルチスレッド)イベントとして命令クラスをトレースしたり,イベントをモニタしたりすることもできます。

◆ウォッチポイント

SET WATCH コマンドで ウォッチポイント を設定すると,特定の変数や他のメモリ記憶位置が変更されたときに必ず実行を停止させることができます。ウォッチポイントが検出されると,デバッガがその時点で実行を中断して,変数の古い値と新しい値を報告します。

◆変数とプログラム記憶位置の操作

EXAMINE コマンドを使用すると,変数やプログラム記憶位置の値をユーザが確認することができます。それらの値を変更するには DEPOSIT コマンドを使用します。変更したあとで,その影響を調べるために実行を継続することができます。その場合にプログラムを再コンパイル,再リンク,および再実行する必要はありません。

◆式の評価

EVALUATE コマンドを使用すると,ソース言語式やアドレス式の値を求めることができます。現在デバッガに設定されている言語の構文に従って,ユーザが式と演算子を指定します。

◆制御構造

別のコマンドの実行を制御するために,各コマンドに対して論理的な制御構造(FOR,IF, REPEAT, WHILE)を使用することができます。

◆共用可能イメージのデバッグ

共用可能イメージ(直接実行はできないイメージ)をデバッグすることができます。SET IMAGEコマンドを使用すると,(/DEBUG 修飾子によりコンパイルされたりリンクされている)共用可能イメージの中で宣言されているシンボルをアクセスすることができます。

◆マルチプロセス・デバッグ

マルチプロセス・プログラム(複数のプロセス内で実行されるプログラム)をデバッグすることができます。SHOW PROCESS コマンドや SET PROCESS コマンドを使用すると,プロセスの情報を表示したり,個々のプロセス内のイメージの実行を制御したりすることができます。

◆タスク・デバッグ

マルチスレッド・プログラムとも呼ばれるタスキング・プログラムをデバッグすることができます。これらのプログラムは,Compaq POSIX Threads Library サービスや POSIX 1003.1bサービス,または各言語固有のタスキング・サービス(たとえば Ada のタスキング・プログラム)を使用します。SHOW TASK コマンドや SET TASK コマンドを使用すると,タスクの情報を表示したり,個々のタスクの実行を制御したりすることができます。

◆ベクタ・デバッグ(VAX のみ)

VAX プロセッサでは,ベクタ化されたプログラム,つまり VAX ベクタ命令を使用するプログラムをデバッグすることができます。ベクタ命令レベルでの実行の制御とモニタ,ベクタ命令の検査と格納,ベクタ・レジスタの内容の操作,特定のベクタ要素を表示するためのマスクの使用,およびスカラ型プロセッサとベクタ型プロセッサの間の同期の制御などを行うことができます。

◆サポートされている端末とワークステーション

すべての VT シリーズ端末と MicroVAX ワークステーションがサポートされています。

1.1.2 便利な機能

◆オンライン・ヘルプ

オンライン・ヘルプは,デバッガ・セッションの途中でいつでも利用することができます。オンライン・ヘルプには,すべてのデバッガ・コマンドについての情報と,選ばれたトピックについての情報が含まれています。

◆ソース・コードの表示

デバッガ・セッションでは,OpenVMS デバッガでサポートされる言語で作成されたプログラム・モジュールのソース・コードを表示できます。

◆画面モード

画面モード では,ウィンドウにいろいろな情報を表示したり,取り込んだりすることができます。このウィンドウは,画面内で移動したりサイズを変更したりできるスクロール可能なウィンドウです。自動的に更新されるディスプレイでリース,命令,レジスタをそれぞれ見ることができます。デバッガの入出力(I/O)や診断メッセージを表示するよう選択することもできます。また,特定のコマンド・シーケンスの出力を取り込むディスプレイ・ユニットを作成することもできます。

◆保持デバッガ

保持デバッガ(kept debugger)でデバッガを実行すると,現在のデバッガ・セッションの内部から別のプログラム・イメージを実行したり,同じイメージを再実行することができ,そのためにデバッガを終了して再起動する必要はありません。プログラムを再実行する場合には,大部分のトレースポイントやウォッチポイントをはじめ,前に設定したブレークポイントを保持するのか,取り消すのかを選択できます。

◆DECwindows Motif ユーザ・インタフェース

OpenVMS デバッガには,オプションとして Compaq DECwindows Motif for OpenVMS グラフィカル・ユーザ・インタフェース(GUI)があり,プッシュ・ボタン,プルダウン・メニュー,ポップアップ・メニューを使用して,共通のデバッガ・コマンドにアクセスできます。GUI はオプションとして使用できるデバッガ・コマンド・ライン・インタフェースの拡張機能であり,DECwindows Motif を実行しているワークステーションで使用できます。GUI を使用すると,DECwindows Motif 環境で関連するすべてのデバッガ・コマンドにコマンド・ラインから完全にアクセスできます。

◆Microsoft Windowsインタフェース

OpenVMS デバッガには,オプションとしてクライアント/サーバ構成があり,Microsoft Windows 95,または Microsoft Windows NT を実行している PC からデバッガにアクセスして,その機能を使用することができます。このデバッガのインプリメントには,OpenVMS(VAX または Alpha CPU)上で実行されるデバッグ・サーバと,Microsoft Windows NT および Microsoft Windows 95(Intel または Alpha CPU)上で実行されるデバッグ・クライアント・インタフェースがあります。

◆クライアント/サーバ構成

クライアント/サーバ構成により,DECwindows Motif ユーザ・インタフェースを使用している OpenVMS ノードから,あるいは Microsoft Windows インタフェースを使用している PC から,特定の OpenVMS ノード上でリモートに実行しているプログラムをデバッグすることができます。多くのデバッグ・オプションを可能とする同一デバッグ・サーバに対して,同時に最大 31 のデバッグ・クライアントがアクセスすることができます。

◆キーパッド・モード

デバッガの起動時には,よく使用されるいくつかのデバッガ・コマンド・シーケンスが省略時の設定により数値キーパッドのキーに割り当てられます(VT52,VT100,または LK201 のキーボードを使用している場合)。そのため,キーボードでコマンドを入力するよりも少ないキーストロークでこれらのコマンドを入力することができます。また,ユーザが独自のキー定義を作成することもできます。

◆ソースの編集

デバッガ・セッションの途中でエラーを見つけたときに EDIT コマンドを使用すると,各自のシステムで使用可能なエディタを使用することができます。使用するエディタは SET EDITOR コマンドで設定します。ランゲージ・センシティブ・エディタ(LSE)を使用すると,画面モードのソース・ディスプレイに表示されているコードのソース・ファイルの中に自動的に編集カーソルが置かれます。

◆コマンド・プロシージャ

デバッガにコマンド・プロシージャ(複数のデバッガ・コマンドが入っているファイル)を実行させることができます。これによって,デバッガ・セッションを再現したり,直前のセッションを続行したり,1 つのデバッガ・セッションの中で同じデバッガ・コマンドを何度も入力する手間を省いたりすることができます。さらにコマンド・プロシージャへパラメータを渡すこともできます。

◆初期化ファイル

省略時のデバッグ・モード,画面ディスプレイ定義,キーパッド・キー定義,シンボル定義などを設定するコマンドの入っている初期化ファイルを作成することができます。デバッガを起動すると,これらのコマンドが自動的に実行され,各ユーザのニーズに合ったデバッグ環境が整います。

◆ログ・ファイル

デバッガ・セッション中に入力したコマンドや,それらのコマンドに対するデバッガの応答をログ・ファイルに記録することができます。ログ・ファイルを使用するとデバッグ作業の流れを追うことができます。また,以後のデバッガ・セッションにおいてログ・ファイルをコマンド・プロシージャとして使用することもできます。

◆シンボル定義

長いコマンドやアドレス式を表現するためのシンボルや,値を短縮形で表現するためのシンボルをユーザが独自に定義することができます。

1.2 デバッグのための実行イメージの準備

プログラムをデバッガの制御下に置いて,最も効果的なシンボリック・デバッグを行うには,第 1.2.1 項 および 第 1.2.2 項 で説明しているように,最初にコンパイラおよびリンカの /DEBUG 修飾子を使用してプログラム・モジュール(コンパイル単位)をコンパイルおよびリンクしておく必要があります。


前へ 次へ 目次 索引