日本-日本語

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

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトルページ
目次
まえがき
第 1 章:移行プロセスの概要
第 2 章:移行方法の選択
第 3 章:アプリケーションの移行
第 4 章:再コンパイルと再リンクの概要
第 5 章:ページ・サイズの拡大に対するアプリケーションの対応
第 6 章:共有データの整合性の維持
第 7 章:アプリケーション・データ宣言の移植性の確認
第 8 章:アプリケーション内の条件処理コードの確認
第 9 章:アプリケーションのトランスレート
第 10 章: ネイティブなイメージとトランスレートされたイメージの間の相互操作性の確認
第 11 章:OpenVMS Alpha コンパイラ
付録 A :アプリケーション評価チェックリスト
用語集
索引
PDF
OpenVMS ホーム
OpenVMS Alpha オペレーティング・システム | HPE 日本

OpenVMS Alpha
オペレーティング・システム
OpenVMS VAX から OpenVMS Alpha へのアプリケーションの移行


目次 索引



アプリケーションをOpenVMS Alphaに移行した後,デバッグしなければなりません。

また,正しい操作が実行されるかどうかを調べるためにアプリケーションをテストすることも必要です。

3.3.1 デバッグ

OpenVMSオペレーティング・システムでは,次のデバッガが準備されています。

  • OpenVMS デバッガはVAXプログラムとネイティブな Alphaプログラムの両方のデバッグをサポートします。ただし,トランスレートされたイメージのデバッグはサポートしません。
    OpenVMS デバッガはシンボリック・デバッガです。つまり,このデバッガを使用する場合には,プログラムで使用しているシンボル(変数名やルーチン名,ラベルなど)によってプログラムの位置を参照できます。プログラム位置を参照するために,メモリ・アドレスやマシン・レジスタを指定する必要はありません。ただし,メモリ・アドレスやマシン・レジスタを指定したい場合は,必要に応じて指定できます。
    OpenVMSデバッガは通常,トランスレートされたイメージに対して動作しません。しかし,トランスレートされたイメージは内部でVAXレジスタをエミュレートしているので,SHOW CALL や SHOW STATE コマンドでデバッグに有用なVAX コンテキストを得ることができます。

  • Delta デバッガは,OpenVMS VAXプログラムとOpenVMS Alphaプログラムのデバッグをサポートします。このデバッガはまた,トランスレートされたイメージのデバッグもサポートします。
    Delta デバッガはアドレス・ロケーション・デバッガです。つまり,このデバッガを使用する場合には,アドレス・ロケーションによってプログラム位置を参照しなければなりません。このデバッガは主に,特権付きプロセッサ・モードまたは高い割り込みレベルで実行されるプログラムをデバッグするために使用します。

  • システムコード・デバッガはシンボリック・デバッガであり,任意の IPL で動作する非ページング・コードとデバイス・ドライバをデバッグできます。

  • ヒープ・アナライザは,リアルタイムでメモリの使用状況を示すグラフィックを表示します。この機能を使用すると,非常に頻繁に行われている割り当てや,非常に大きいメモリ・ブロック,フラグメンテーション,メモリ・リークなど,効率の悪いメモリの使用状況を直ちに識別できます。

デバッグはAlphaハードウェアで実行しなければなりません。

OpenVMS Alpha システムでは,次の DEC 言語で作成したプログラムに対してデバッガを使用できます。

  • DEC Ada

  • DEC BASIC

  • DEC C

  • DEC C++

  • DEC COBOL

  • DEC Fortran (VAX システム)

  • Digital Fortran (Alpha システム)

  • MACRO--32 (MACRO-32 コンパイラでのコンパイル)

  • MACRO--64

  • DEC Pascal

  • DEC PL/I

OpenVMS デバッガには,OpenVMS Alpha コードのアーキテクチャ上の違いに対処する機能がいくつか含まれています。これらの機能を使用すると, OpenVMS Alpha システムに移植するコードを簡単にデバッグできるようになります。たとえば,SET コマンドの /UNALIGNED_DATA 修飾子を使用すると,アラインされていないデータにアクセスする命令 (たとえば,ワード境界にないデータにアクセスする load word 命令など) のすぐ後で,デバッガはブレークします。

どのルーチンでも,SET コマンドに /RETURN 修飾子を指定できます。 OpenVMS VAX システムの場合のように,CALLS 命令や CALLG 命令を使用して呼び出したルーチンに制限されません。OpenVMS Alpha システム固有の機能の詳細については,『HP OpenVMS デバッガ説明書』を参照してください。

OpenVMS デバッガを使用して,移行したアプリケーションをAlphaシステムでデバッグする場合には,次のことを考慮しなければなりません。

  • Alphaコンパイラが使用できる言語で作成されたプログラムならばデバッガを使用できます。

  • デバッガは,インストールされている常駐イメージのデバッグをサポートしません。インストールされている常駐イメージについての詳しい説明は,『OpenVMS システム管理者マニュアル (下巻)』を参照してください。

  • このデバッガはインライン・ルーチンのデバッグをサポートしません。インライン・ルーチンをデバッグしようとすると,デバッガはルーチンをアクセスできないことを示すメッセージを出力します。


    DBG> %DEBUG-E-ACCESSR, no read access to address 00000000 
    

OpenVMS デバッガによるデバッグについての詳しい説明は,『OpenVMS デバッガ説明書』を参照してください。

Delta/XDelta デバッガ (DELTA/XDELTA) は OpenVMS Alpha システムで動作し, Alpha アーキテクチャで必要となる新しいコマンドを提供し,また,既存のコマンドの一部も拡張しています。たとえば,ベース・レジスタの表示は 16 進数ではなく,10 進数で表示し,別のプロセスの内部プロセス識別 (PID) 番号を確認する機能も追加されています。 Delta/XDelta デバッガが OpenVMS Alpha システムでどのように動作するかについての詳しい説明は,『HP OpenVMS Delta/XDelta Debugger Manual』を参照してください。

Delta デバッガを使用すれば,部分的または完全にトランスレートされたアプリケーションをデバッグできます。

トランスレートされたアプリケーション

トランスレートされたイメージをデバッグする場合には,次のことを確認しなければなりません。

  • トランスレートを行うプログラムがOpenVMS VAX バージョン 7.1 のもとで正しく動作するかどうかを確認しなければなりません。

  • ランタイム・ライブラリのIIFファイルとVESTが使用中のOpenVMS Alphaのバージョンと同じリリースであるかどうかを確認しなければなりません。

  • Alpha 命令および VAX 命令を得るために,VEST の /DEBUG,/LIST および /SHOW=MACHINE_CODE 修飾子を使用します(リストのアスタリスクは,VAX命令を示しています)。比較を行うために,VAXイメージのマップ・ファイルとリスティング・ファイルを用意してください。

アプリケーションの混在

ネイティブなAlphaコードとトランスレートされたコードが混在するアプリケーションをデバッグするには,/TIE修飾子を使用してアプリケーションのネイティブな部分がコンパイルされているかどうかを確認しなければなりません。さらに, /NONATIVE_ONLYリンカ・オプションを使用してアプリケーションをリンクしなければなりません。

Delta デバッガによるデバッグについての詳しい説明は,『OpenVMS Delta/XDelta Debugger Manual』を参照してください。

OpenVMS Alpha のシステムコード・デバッガは,任意の IPL で動作する非ページング・システム・コードとデバイス・ドライバをデバッグするために使用します。OpenVMS Alpha のシステムコード・デバッガはシンボリック・デバッガです。したがって,ソース・コードに指定するときと同様に,変数名,ルーチン名などを指定できます。また,ソフトウェアが実行しているソース・コードを表示し,ソース行を 1 ステップずつ実行することもできます。

システムコード・デバッガを使用するには,2 台の Alpha システムが必要です。

このデバッガを使用すると,次の言語で作成されたコードをデバックできます。

  • C

  • BLISS

  • VAX MACRO

注意

BLISS コンパイラは,OpenVMS VAX バージョン 7.1 と OpenVMS Alpha バージョン 7.1 に同梱されている OpenVMS フリーウェア CD に登録されています。

OpenVMS Alpha のシステムコード・デバッガは,各言語の構文,データ型,演算子,式,有効範囲に関する規則,その他の構造を認識します。プログラムが複数の言語で作成されている場合には,デバッグ・セッションでデバッグ・コンテキストを 1 つの言語から別の言語に変更できます。

Step 2 ドライバと OpenVMS Alpha システムコード・デバッガの詳細については,『Writing OpenVMS Alpha Device Drivers in C』を参照してください。

3.3.2 システム・クラッシュの分析

OpenVMS では,システム・クラッシュを分析するために 2 つのツールを使用できます。それはシステム・ダンプ・アナライザ (SDA) とクラッシュ・ダンプ・ユーティリティ・エクストラクタ (CLUE) です。

OpenVMS Alpha システムのシステム・ダンプ・アナライザ (SDA) ユーティリティは, OpenVMS VAX システムで提供されるユーティリティとほとんど同じです。多くのコマンド,修飾子,表示は同一ですが,クラッシュ・ダンプ・ユーティリティ・エクストラクタ (CLUE) ユーティリティの機能にアクセスするためのいくつかのコマンドも含めて,コマンドと修飾子が追加されています。また,プロセッサ・レジスタやデータ構造体など OpenVMS Alpha システム固有の情報を表示できるように,一部の表示も変更されています。

SDA インタフェースは少しだけ変更されていますが,VAX と Alpha のダンプ・ファイルの内容と,ダンプからシステム・クラッシュを分析するための全体的な処理は,2 種類のコンピュータで少し違います。Alpha の実行パスは,VAX の実行パスの場合より複雑な構造体とパターンをスタックに残します。

VAX コンピュータで SDA を使用するには,まず,VAX システムの OpenVMS 呼び出し規則を十分理解しておく必要があります。同様に, Alpha システムで SDA を使用するには,まず,Alpha システムの OpenVMS 呼び出し規則を十分理解しておかなければ,スタックでクラッシュのパターンを解読できるようになりません。

SDA は次のように変更されています。

  • SHOW CRASH コマンドと SHOW STACK コマンドの表示には,致命的なシステム例外バグチェックのデバッグを簡単にするための追加情報が含まれるようになりました。

  • SHOW EXEC コマンドの表示には,イメージ・スライシング を使用してロードされた場合,エグゼクティブ・イメージに関する追加情報が含まれるようになりました。スライシングは,エグゼクティブ・イメージの場合は,エグゼクティブ・イメージ・ローダが実行し,ユーザ・モード・イメージの場合は,OpenVMS インストール・ユーティリティが実行する機能です。エグゼクティブ・イメージ (またはユーザ・モード・イメージ) をスライシングすると,数が制限されているトランスレーション・バッファ・エントリの競合を削減できるため,性能を大幅に向上できます。

  • SDA の新しいコマンドである MAP コマンドを使用すると,メモリ内のアドレスをマップ・ファイルのイメージ・オフセットに変換できます。

  • FPCR という新しいシンボルがシンボル・テーブルに追加されました。このシンボルは浮動小数点レジスタを表します。



クラッシュ・ログ・ユーティリティ・エクストラクタ (CLUE) は,クラッシュ・ダンプの履歴と,各クラッシュ・ダンプの重要なパラメータを記録し,重要な情報を抽出して,要約するためのツールです。クラッシュ・ダンプは,システム・クラッシュが発生するたびに上書きされるため,最新のクラッシュに対してだけしか使用できませんが,クラッシュ履歴ファイル (OpenVMS VAX) と,各クラッシュに対して個別のリスト・ファイルを持つ要約クラッシュ履歴ファイル (OpenVMS Alpha) は,システム・クラッシュを永久的に記録します。

OpenVMS VAX と OpenVMS Alpha でのインプリメント上の相違点は, 表 3-1 に示すとおりです。

表 3-1 OpenVMS VAX と OpenVMS Alpha の CLUE の相違点
属性 OpenVMS VAX OpenVMS Alpha
アクセス方式 独立したユーティリティとして起動される。 SDA を通じてアクセスされる。
履歴ファイル 各クラッシュのクラッシュ・ダンプ・ファイルから 1 行の要約情報と詳細情報を格納した累積ファイル。 各クラッシュ・ダンプに対して 1 行の要約だけを格納した累積ファイル。各クラッシュの詳細情報は別のリスト・ファイルに格納される。
クラッシュ・ダンプのデバッグの他の使い方 なし。 CLUE コマンドは会話方式で使用でき,実行中のシステムを確認できる。
ドキュメンテーション 『OpenVMS システム管理者マニュアル』と『OpenVMS システム管理ユーティリティ・リファレンス・マニュアル』の Bookreader バージョン。 『OpenVMS システム管理者マニュアル』と『OpenVMS Alpha System Dump Analyzer Utility Manual』の Bookreader バージョン。



3.3.3 テスト

移行したバージョンの性能と機能を元のVAXバージョンと比較するために,アプリケーションをテストしなければなりません。

テストではまず,VAXアプリケーションに対して一連のテストを実行することにより,アプリケーションに対して基準となる結果を設定します。

アプリケーションをAlphaシステムで実行した後,次の2種類のテストを実行できます。

  • アプリケーションのVAXバージョンに対して使用される標準テスト

  • アーキテクチャの変更による問題を特に確認するための新しいテスト



新しいアーキテクチャを使用することにより,アプリケーションの一部が変更されるため,OpenVMS Alphaにアプリケーションを移行した後,そのアプリケーションをテストすることは特に重要です。アプリケーションの変更によってエラーが発生するだけでなく,新しい環境では,VAXバージョンで検出されなかった問題が発生する可能性があります。

移行されたアプリケーションをテストするには,次の操作が必要です。

  1. 移行する前に,アプリケーションにとって必要な標準データを入手する

  2. アプリケーションだけでなく,一連のテストも移行する(テストがAlphaでまだ準備されていない場合)。

  3. Alphaシステムでテストを検証する

  4. 移行したアプリケーションに対して移行したテストを実行する

ここでは,リグレッション・テストとストレス・テストが役立ちます。ストレス・テストは,同期に関するプラットフォームの相違点をテストするために特に重要です。特に,複数の実行スレッドを使用するアプリケーションの場合は,ストレス・テストが役立ちます。

標準テストは,移行したアプリケーションの機能を検証するためにかなり長くかかりますが,移行固有の問題を調べるためのテストをいくつか追加しなければなりません。特に次の点に注意してください。

  • コンパイラの相違点
    最適化およびデータ・アラインメントの変更

  • アーキテクチャの相違点
    たとえば命令の不可分性,メモリの不可分性,読み込み/書き込み順序などの変更

  • 統合
    異なる言語で作成されたモジュールや,トランスレートしなければならなかったモジュールの統合



3.3.4 潜在的なバグの発見

作業方法に何も問題がなく,移行に関するすべての指示に従っているにもかかわらず,OpenVMS VAX システムでは問題が発生したことのないプログラムでバグを検出することがあります。たとえば,VAX コンピュータでは,プログラムで一部の変数を初期化しないエラーが発生しても問題になりませんが,Alpha コンピュータでは演算例外が発生します。2 つのアーキテクチャでは使用できる命令が違い,コンパイラが命令を最適化する方法も変更されているため,移行処理で同じような問題が発生する可能性があります。これまで隠れていたバグをすべて解決できるような新しい方法はありませんが,プログラムを移植した後,他のユーザが実際に使用を開始する前に,プログラムを徹底的にテストする必要があります。

3.4 移行したアプリケーションのソフトウェア・システムへの統合

再コンパイルまたはトランスレーションによってアプリケーションを移行した後,移行によって他のソフトウェアとのやりとりに問題が発生していないかどうかを確認しなければなりません。

VAX と Alpha システム間の相互操作性に関する問題の原因として,次のことが考えられます。

  • VMSクラスタ環境のAlpha システムと VAX システムは,別々のシステム・ディスクを使用しなければなりません。アプリケーションが正しいシステム・ディスクを参照しているかどうか,確認する必要があります。

  • イメージ名
    混在する環境では,アプリケーションが正しいバージョンを参照するかどうかに関して,次のことを確認してください。

    • イメージのネイティブVAXバージョンとネイティブなAlphaバージョンが同じ名前を持つこと

    • イメージをトランスレートしたバージョンで名前の最後に"_TV"という文字列が追加されていること

  • 再コンパイルしたイメージではデータが自然にアラインされていると考えられますが,トランスレートされたイメージでは,元のVAXイメージと同様にデータはアラインされていない可能性があります。


目次 索引

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