HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
ヒープ・アナライザはデバッガの 1 機能で,メモリの使用状況をリアルタイムにグラフィック表示します。ヒープ・アナライザは,OpenVMS I64,Alpha,および VAX のシステムで使用できます。この表示を調べることで,ユーザ・アプリケーション内のどの領域でメモリの使用状況と性能を改善できるかを確認することができます。たとえば,頻繁に行われすぎる割り当て,大きすぎるメモリ・ブロック,フラグメンテーションの形跡,メモリ・リークなどを見つけることができます。
問題の領域がどこか見つけた後,ビューを拡大してさらに詳しく表示したり,変更したりすることができます。割り当てのサイズ,内容,アドレスなどの追加情報も表示することができます。
問題点を個々の割り当てにまで絞りこんだ後は,トレースバック情報を表示できます。ヒープ・アナライザでは,割り当てのトレースバック・エントリをアプリケーション・プログラムのソース・コードと相互に対応させることができます。それからソース・コード・ディスプレイをスクロールして調べていけば,問題のあるコードを特定でき,どう修正したらいいかを決定することができます。
本章では,次のことについて説明します。
以下の各項では,ヒープ・アナライザを起動してユーザ・アプリケーションを実行する方法について説明します。
12.1.1 ヒープ・アナライザの起動
デバッグ・セッション中は,次のいずれかの方法でヒープ・アナライザを起動することができます。
$ 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 コマンドを入力します。
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」ヒストグラムには,セグメント・タイプの要約と統計情報が表示されます。
ヒープ・アナライザを使用するとき,作業中のウィンドウのサイズを拡大または縮小しなければならない場合があります。この拡大や縮小には,ウィンドウ間の枠を引っぱるか,または画面全体のサイズを変更します。
| 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」ヒストグラム | セグメントのサイズと使用状況についての統計情報を表示する。 |
ヒープ・アナライザの「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.6 アプリケーションの起動
デバッグ・セッションの中からヒープ・アナライザを起動した場合は,次の手順に従ってユーザ・アプリケーションを起動します。
デバッグ・セッションの外でヒープ・アナライザを起動した場合は,上の手順の 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 を使って実行されている場合,共有リンクを避け,プライベート・イメージのコピーを起動するようにします。ただしこの場合,ヒープ・アナライザが制御するアプリケーションの性能に影響が現れ,共有リンクによって起動されたイメージほど高速に動作しなくなります。
| 前へ | 次へ | 目次 | 索引 |