日本-日本語

製品  >  ソフトウェア  >  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
デバッガ説明書


目次 索引

第 12 章
ヒープ・アナライザの使用

ヒープ・アナライザはデバッガの 1 機能で,メモリの使用状況をリアルタイムにグラフィック表示します。ヒープ・アナライザは,OpenVMS I64,Alpha,および VAX のシステムで使用できます。この表示を調べることで,ユーザ・アプリケーション内のどの領域でメモリの使用状況と性能を改善できるかを確認することができます。たとえば,頻繁に行われすぎる割り当て,大きすぎるメモリ・ブロック,フラグメンテーションの形跡,メモリ・リークなどを見つけることができます。

問題の領域がどこか見つけた後,ビューを拡大してさらに詳しく表示したり,変更したりすることができます。割り当てのサイズ,内容,アドレスなどの追加情報も表示することができます。

問題点を個々の割り当てにまで絞りこんだ後は,トレースバック情報を表示できます。ヒープ・アナライザでは,割り当てのトレースバック・エントリをアプリケーション・プログラムのソース・コードと相互に対応させることができます。それからソース・コード・ディスプレイをスクロールして調べていけば,問題のあるコードを特定でき,どう修正したらいいかを決定することができます。

本章では,次のことについて説明します。

  • ヒープ・アナライザ・セッションの開始 ( 第 12.1 節 )

  • 省略時設定のディスプレイの作業 ( 第 12.2 節 )

  • タイプ設定とタイプ・ディスプレイの変更 ( 第 12.3 節 )

  • ヒープ・アナライザの終了 ( 第 12.4 節 )

  • サンプル・セッション ( 第 12.5 節 )



12.1 ヒープ・アナライザ・セッションの開始

以下の各項では,ヒープ・アナライザを起動してユーザ・アプリケーションを実行する方法について説明します。

12.1.1 ヒープ・アナライザの起動

デバッグ・セッション中は,次のいずれかの方法でヒープ・アナライザを起動することができます。

  1. デバッガのメイン・ウィンドウの「File」メニューから「Run Image」または「Rerun Same」を選択する。ダイアログ・ボックスが表示されたら,実行したいプログラムを選択して「Heap Analyzer」トグル・ボタンをクリックする。

  2. デバッガのコマンド入力プロンプトから,RUN/HEAP_ANALYZER または RERUN/HEAP_ANALYZER program-image コマンドを入力する。

  3. Alpha システムと VAX システムでは,デバッガの外の DECterm ウィンドウでDCL プロンプト ($) から次の各コマンドを実行してユーザ・プログラムを実行する。


    $ DEFINE/USER/NAME=CONFINE LIBRTL SYS$LIBRARY:LIBRTL_INSTRUMENTED
    


    保護されたイメージに対してヒープ・アナライザを使用するには,次のコマンドを入力して,プログラムを実行します。


    $ DEFINE/EXEC/NAME=CONFINE LIBRTL SYS$LIBRARY:LIBRTL_INSTRUMENTED
    


    この処理が必要なのは,次のコマンドを使用してイメージをインストールした場合です。


    $ INSTALL ADD imagename/PROTECTED
    


    ヒープ・アナライザは,デバッグ・セッションの外部からも起動できます。その場合には,上記の DEFINE/USER ( または DEFINE/SYSTEM) コマンドを入力したあと,DCL の RUN/NODEBUG コマンドを入力します。

  4. I64 システムでは,デバッグ・プロンプト (DBG>) で, START HEAP_ANALYZER コマンドを入力する。

注意

OpenVMS Alpha システムでは,/NODEBUG 修飾子を使用してリンクしたプログラムで,ヒープ・アナライザは正しく動作しません。

OpenVMS I64 システムおよび VAX システムでは, /NODEBUG 修飾子を使用してリンクされたプログラムでヒープ・アナライザは動作しますが,表示されるトレースバック情報はわずかです。

ヒープ・アナライザが問題なく起動すると,ヒープ・アナライザ起動画面が表示されます。

12.1.2 ヒープ・アナライザのウィンドウ

ヒープ・アナライザには,メイン・ウィンドウ,6 つの補助ウィンドウ,およびコントロール・パネルがあります ( 図 12-1 を参照 )。

最も重要なウィンドウである「Memory Map」には,ユーザ・アプリケーションによるメモリの使用状況が動的に表示されます。起動時の「Memory Map」には,アプリケーションを構成するイメージが表示されます。アプリケーションを実行すると,個々のメモリ・ブロック,イメージ,プログラム領域,メモリ・ゾーン,および動的文字列の相対記憶位置とサイズが,メモリ空間での割り当てと割り当て解除に応じて表示されます。

「Message」ウィンドウには,ヒープ・アナライザ・セッションについての情報が表示されます。起動時の「Message」ウィンドウには,'Heap Analyzer initialization complete. Press Start button to begin program' というメッセージが表示されます。ユーザ・アプリケーション実行中は,通報メッセージやエラー・メッセージが表示されます。

「Push Button」コントロール・パネルには,「Memory Map」ディスプレイの速度を調節するボタンがあります。デバッガを起動した後,ユーザ・アプリケーションの実行を開始するには,「Start」ボタンをクリックします。ユーザ・アプリケーション実行中にコントロール・パネルの他のボタンをクリックすると,連続表示の一時停止や低速化などの操作ができます。

「Information 」ウィンドウには,「Memory Map」のセグメントについての情報が表示されます。アプリケーション実行中に,いつでも実行を一時停止して特定の情報を表示することができます。

「Source」ウィンドウには,「Memory Map」のセグメントに対応する,アプリケーションのソース・コードが表示されます。

「Do-not-use Type」リストでは,セグメント・タイプつまりグループ名を再設定して,「Memory Map」ディスプレイを調整することができます。

「Views-and-Types」ディスプレイでは,選択した特定のセグメント・タイプを表示して,「Memory Map」ディスプレイを調整することができます。

「Type」ヒストグラムには,セグメント・タイプの要約と統計情報が表示されます。

ヒープ・アナライザを使用するとき,作業中のウィンドウのサイズを拡大または縮小しなければならない場合があります。この拡大や縮小には,ウィンドウ間の枠を引っぱるか,または画面全体のサイズを変更します。

図 12-1 ヒープ・アナライザのウィンドウ


1.「Memory Map」 メモリつまり使用中の P0 空間部分をグラフィック表示する。それぞれの割り当ては色付きの帯のセグメントとして表示される。
2.「Message」ウィンドウ ヒープ・アナライザの通報メッセージとエラー・メッセージやセグメントの説明を 1 行で表示する。
3.「Information」ウィンドウ Memory Map」に表示されるセグメントとセグメント・タイプについての情報を表示する。
4.「Source」ウィンドウ アプリケーションのソース・コードを表示する。
5.「Do-not-use Type」リスト セグメント・タイプ ( セグメントを特徴づける名前 ) として 使用しない ルーチンの一覧を表示する。
6.「Views-and-Types」ディスプレイ ヒープ・アナライザが認識しているセグメント・タイプの一覧を表示する。セグメント・ディスプレイの変更も行う。
7.「Push Button」コントロール・パネル 「Start」(「Step」),「Pause」,「Slow」,「Sync」の各ボタンがある。「Memory Map」ディスプレイの速度を調節するためにボタンを使用する。
8.「Type」ヒストグラム セグメントのサイズと使用状況についての統計情報を表示する。



12.1.3 ヒープ・アナライザのプルダウン・メニュー

ヒープ・アナライザの「Memory Map」の上には 5 つのプルダウン・メニューがあります ( 図 12-2 を参照 )。メニュー項目をすべて示すために,この図は少し修正してあります。

図 12-2 ヒープ・アナライザのプルダウン・メニュー


1.「File」メニュー ヒープ・アナライザを終了する。
2.「Display」メニュー 「Memory Map」ディスプレイを調整したり,「Information」ウィンドウを消去する。
3.「Zoom」メニュー 「Memory Map」のビューを拡大または縮小する。
4.「View」メニュー ディスプレイの粒度を選ぶ。
5.「Options」メニュー 検索ディレクトリ・リストを指定したり,「Do-not-use Type」リストを修正する。
6.「Help」メニュー コンテキスト依存またはタスク指向のオンライン・ヘルプを表示する。



12.1.4 ヒープ・アナライザのコンテキスト依存のメニュー

ヒープ・アナライザのほとんどの操作は,コンテキスト依存のポップアップ・メニューから実行できます。ヒープ・アナライザのほとんどのウィンドウには,使用可能なタスクを並べたポップアップ・メニューがあります ( 図 12-3 を参照 )。各ウィンドウのポップアップ・メニューにアクセスするには,そのウィンドウの中にマウス・ポインタを置いて MB3 をクリックします。

図 12-3 ヒープ・アナライザのコンテキスト依存のポップアップ・メニュー


1.「Memory Map」ポップアップ 「Memory Map」に表示されているセグメントについての追加情報を表示する。「Views-and-Types」ディスプレイにあるセグメント・タイプにジャンプする。また,「Do-not-use Type」リストにセグメント・タイプを追加する。
2.「Information」ウィンドウ・ポップアップ 「Information」ウィンドウに表示されているトレースバックの行から,「Source」ウィンドウにある対応したソース・コードへジャンプする。
3.「Do-not-use Type」リスト・ポップアップ 「Do-not-use Type」リストからセグメント・タイプを削除する。
4.「Views-and-Types」ディスプレイ・ポップアップ 左側:表示されているセグメント・タイプについての追加情報を表示する。「Views-and-Types」ディスプレイ内でセグメント・タイプを強調表示する。また,「Do-not-use Type」リストにセグメント・タイプを追加する。

右側: 「Views-and-Types」ディスプレイの左側で強調表示されたセグメント・タイプのディスプレイ属性を調整する。

5. 「Type」ヒストグラム・ポップアップ 表示されているセグメント・タイプについての追加情報を表示する。「Type」ヒストグラム内でセグメント・タイプを強調表示する。また,「Do-not-use Type」リストにセグメント・タイプを追加する。



12.1.5 ソース・ディレクトリの設定

アプリケーションのソース・コードを格納しているディレクトリ以外のディレクトリからヒープ・アナライザを起動する場合は,起動画面が表示されてから,ヒープ・アナライザにソース・ディレクトリを設定することができます。

ソース・ディレクトリを設定するには,次の手順に従います。

  1. ヒープ・アナライザ画面の「Options」メニューで「Set Source...」を選択する。
    「Set Source」ダイアログ・ボックスが表示される。

  2. デバッガの SET SOURCE コマンドでの入力と同じように,ソース・ディレクトリのディレクトリ指定を入力する。
    SET SOURCE コマンドについての詳しい説明は,『デバッガ・コマンド・ディクショナリ』を参照。

  3. 「OK」をクリックする。

これでヒープ・アナライザがユーザ・アプリケーションにアクセスできます。

12.1.6 アプリケーションの起動

デバッグ・セッションの中からヒープ・アナライザを起動した場合は,次の手順に従ってユーザ・アプリケーションを起動します。

  1. 「Push Button」コントロール・パネルの「Start」ボタンをクリックする。
    「Message」ウィンドウに "application starting" というメッセージが表示され,「Start」ボタンのラベルが「Step」に変わる。 OpenVMS デバッガのメイン・ウィンドウが前面に出る。

  2. デバッガのコントロール・パネルの「Go」ボタンをクリックしてから, OpenVMS デバッガのウィンドウをアイコン化する。
    ユーザ・アプリケーションに対応したメモリ・イベントの表示が,「Memory Map」内で開始される。

デバッグ・セッションの外でヒープ・アナライザを起動した場合は,上の手順の 1 だけを実行してユーザ・アプリケーションを起動してください。

アプリケーションが実行されると,「Memory Map」( および,ヒープ・アナライザの他の部分 ) は連続的に更新されて,ユーザ・アプリケーションの状態を反映します。

中断しなければ ( 第 12.1.7 項 を参照 ),この更新は,何らかのオカレンスによってメモリ・イベントが停止されるまで続きます。たとえば,ユーザ・アプリケーションが入力を求めるプロンプトを出す場合や,デバッガが入力を求めるプロンプトを出す場合,アプリケーションの実行が完了した場合などです。

12.1.7 表示速度の調節

アプリケーションを実行しながら「Memory Map」でイベントを調べる場合,ヒープ・アナライザのプッシュ・ボタンを使用して,表示の一時停止,低速化などの速度調節が行えます。 図 12-4 は,「Start」ボタンが押された直後のヒープ・アナライザ・ウィンドウの様子で,これらのプッシュ・ボタンがどう表示されるかを表しています。

「Slow」と「Pause」のプッシュ・ボタンは,それぞれ表示を低速化または一時停止します。

「Step」プッシュ・ボタンは,メモリ・イベントを 1 ステップずつ進めます。

「Sync」ボタンの右側の「Sync」ヒストグラム ( 図には示されていない ) は,アプリケーションからどれだけ離れてヒープ・アナライザが実行されているかを表します。性能面での理由から,ヒープ・アナライザにメモリ・イベントが表示されるのは,アプリケーション内でそのイベントが発生してから数秒後になります。

図 12-4 ヒープ・アナライザのコントロール・パネル


1.「Start」ボタン クリックすると,アプリケーションの実行と「Memory Map」ディスプレイが開始する。開始すると「Start」ボタンは「Step」ボタンに変わる。「Step」ボタンは初めは薄く表示されている (アクセスできない)。
2.「Step」ボタン クリックすると,「Memory Map」ディスプレイ内のメモリ・イベントが1 ステップずつ進むようになる。「Pause」ボタンをクリックするまでは薄く表示されている。
3.「Pause」ボタン クリックすると,アプリケーションの実行と「Memory Map」の動的ディスプレイが一時停止する (または再開する)。
4.「Slow」ボタン クリックすると,「Memory Map」の動的ディスプレイが低速になる。
5.「Sync」ボタン クリックすると,ユーザ・アプリケーション・プログラムの実行と「Memory Map」内のメモリ・イベント・ディスプレイが同期する。

同時性が重要な場合,「Sync」プッシュ・ボタンを使用して,ヒープ・アナライザの表示とアプリケーションの実行とを同期させることができます。同期させるとアプリケーションの実行速度は低下します。

OpenVMS Alpha システムでは,デバッガやヒープ・アナライザのようにシステム・サービス・インタセプションを使用するものは,共有リンクによって起動されたシステム・サービス呼び出しイメージを受け取ることができません。そのためイメージを起動するプログラムは,イメージがリンクされているか /DEBUG を使って実行されている場合,共有リンクを避け,プライベート・イメージのコピーを起動するようにします。ただしこの場合,ヒープ・アナライザが制御するアプリケーションの性能に影響が現れ,共有リンクによって起動されたイメージほど高速に動作しなくなります。

12.2 省略時設定のディスプレイでの作業

以下の各項では,メモリに問題のあることが省略時設定の「Memory Map」ディスプレイを見て分かる場合に,ヒープ・アナライザをどう使用するかについて説明します。

見て分かる問題とは,割り当てが予想より大きすぎる,割り当てが頻繁に繰り返される,割り当てが行われるごとに割り当て量が増分される,より効率的な割り当てを行えることなどです。

そのような場合,ヒープ・アナライザ・セッションを次の手順で実行します。

  1. 「Memory Map」ディスプレイを調べる。

  2. 「Memory Map」のディスプレイ特性を設定する (省略可能)。

  3. 個々のセグメントについての追加情報を求める (省略可能)。

  4. 個々のセグメントについてのトレースバック情報を求める。

  5. トレースバック・エントリをソース・コードのルーチンと相互に対応づける。


目次 索引

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