日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 部:デバッガ概要
第 1 章:デバッガ概要
第 2 部:コマンド・インタフェース
第 2 章:デバッガの起動
第 3 章:プログラム実行の制御とモニタ
第 4 章:プログラム・データの検査と操作
第 5 章:プログラム内シンボルへのアクセス制御
第 6 章:ソース・コードの表示の制御
第 7 章:画面モード
第 3 部:DECwindows インタフェース
第 8 章:DECwindows Motifインタフェースの概要
第 9 章:デバッグ・セッションの開始と終了
第 10 章:デバッガの使用方法
第 4 部:PC クライアント・インタフェース
第 11 章:デバッガの PC クライアント/サーバ・インタフェースの概要
第 5 部:高度なトピック
第 12 章:ヒープ・アナライザの使用
第 13 章:その他の便利な機能
第 14 章:特殊なデバッグ
第 15 章:マルチプロセス・プログラムのデバッグ
第 16 章:タスキング・プログラムのデバッグ
第 6 部:付録
付録 A :定義済みのキー機能
付録 B :組み込みシンボルと論理名
付録 C :各言語に対するデバッガ・サポートの要約
付録 D :EIGHTQUEENS.C
索引
PDF
OpenVMS ホーム

HP OpenVMS
デバッガ説明書


目次 索引

第 1 章
デバッガ概要

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

  • デバッガの機能についての概要

  • デバッグ用プログラムのコンパイルとリンクの方法

  • デバッガ・セッションの開始と終了の方法

  • 機能別に分けられたデバッガ・コマンドの一覧

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

1.1 デバッガの概要

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

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

  • プログラムの実行を制御し,監視できる。

  • プログラムのソース・コードを表示し,ブラウズして,注意すべき命令と変数を細かく確認できる。

  • 指定したポイントでプログラムの実行を中断して,変数やプログラムの他の要素の変化をモニタできる。

  • 変数の値を変更する。場合によっては,ソース・コードの編集や再コンパイルおよび再リンクを行わずに,変更したプログラムをテストできる場合もある。

  • プログラムの実行パスをトレースする。

  • プログラムの実行中に変数やその他のプログラム要素の変化をモニタする。

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

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

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-32 1
MACRO-64 Pascal PL/I  

1MACRO-32 ¤Ï AMACRO ¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

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

Assembler (IAS) BASIC BLISS C
C++ COBOL Fortran MACRO-32 1
IMACRO PASCAL    
Assembler (IAS) BASIC BLISS C
C++ COBOL Fortran MACRO-32 1
IMACRO PASCAL    

1MACRO-32 ¤Ï AMACRO ¥³¥ó¥Ñ¥¤¥é¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ÅÀ¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
1MACRO-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 ベクタ命令を使用するプログラムをデバッグすることができます。ベクタ命令レベルでの実行の制御とモニタ,ベクタ命令の検査と格納,ベクタ・レジスタの内容の操作,特定のベクタ要素を表示するためのマスクの使用,およびスカラ型プロセッサとベクタ型プロセッサの間の同期の制御などを行うことができます。ベクタ化されたプログラムのデバッグについては,『OpenVMS デバッガ説明書 (Version 7.2)』を参照してください。

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

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

1.1.2 便利な機能

◆オンライン・ヘルプ

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

◆ソース・コードの表示

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

◆画面モード

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

◆保持デバッガ

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

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

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

◆Microsoft Windowsインタフェース

OpenVMS デバッガには,オプションとしてクライアント/サーバ構成があり,ユーザの Microsoft オペレーティング・システムを実行している PC からデバッガにアクセスして,その機能を使用することができます。このデバッガは,OpenVMS (VAX,Alpha,または I64 CPU) 上で実行されるデバッグ・サーバと,Microsoft オペレーティング・システム (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 修飾子を使用してプログラム・モジュール ( コンパイル単位 ) をコンパイルおよびリンクしておく必要があります。

1.2.1 デバッグのためのプログラムのコンパイル

例 1-1 では,FORMS.C と INVENTORY.C という 2 つのソース・モジュールにより構成されているデバッグのための C プログラム,FORMS.EXE のコンパイル方法を示しています。 FORMS.C はメイン・プログラム・モジュールです。

例 1-1 /DEBUG 修飾子によるプログラムのコンパイル

$ CC/DEBUG/NOOPTIMIZE INVENTORY,FORMS

言語によっては,/DEBUG 修飾子や /NOOPTIMIZE 修飾子をコンパイラ・コマンドの省略時設定にしているものもあることに注意してください。この例では強調のためにこれらの修飾子を使用しています。特定の言語固有のコンパイルとリンクについては,各言語とともに提供されるドキュメントを参照してください。

例 1-1 のコンパイラ・コマンドに指定した /DEBUG 修飾子は,オブジェクト・モジュール FORMS.OBJ と INVENTORY.OBJ で,FORMS.C と INVENTORY.C に関連付けられたシンボル情報を含むようにコンパイラに要求します。このようにすると,プログラムをデバッグしているときに,変数やルーチン,他の宣言されたシンボルのシンボル名を参照できます。シンボル情報は,/DEBUG 修飾子を使用して作成されたオブジェクト・ファイルにだけ格納されます。すべてのシンボル情報を含むのか,プログラムの流れをトレースすることだけが必要なのかは,ユーザが制御できます ( 第 5.1.1 項 を参照)。

一部のコンパイラでは,オブジェクト・コードを最適化して,プログラムのサイズを小さくしたり,実行速度を向上できます。しかし,このようにすると,オブジェクト・コードは必ずしもソース・コードと対応しなくなり,その結果,デバッグが困難になります。この状況を回避するには,/NOOPTIMIZE コマンド修飾子 ( またはそれに相当する機能 ) を使用して,プログラムをコンパイルします。最適化されていないプログラムをデバッグした後,今度は /NOOPTIMIZE 修飾子を指定せずにプログラムを再コンパイルし,テストできます。このようにすると,最適化機能を利用できます。最適化の効果については, 第 14.1 節 を参照してください。


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項