                                               更新日付: 2003 年 3 月 25 日

 Sun[tm] ONE Studio 8:dbx Readme

     目次

       A. はじめに
       B. Sun ONE Studio 8 dbx について
       C. 新規および変更された機能
       D. ソフトウェアの修正事項
       E. 問題点と回避策
       F. 制限事項と互換性の問題
       G. 記述の誤りの訂正



     ------------------------------------------------------------------

     A. はじめに

     この文書では、Sun[tm] Open Net Environment (Sun ONE) Studio  8 dbx
     に関する情報を提供します。このリリースで導入された新機能、ソフトウ
     ェアの修正事項、既知の問題点、制限事項、互換性の問題について説明し
     ます。この文書の記載内容はこのリリースのマニュアルの記載内容に優先
     します。

     製品マニュアル

        * リリースノート: http://docs.sun.com/ で入手できます。リリース
          ノートの情報は、各製品の「Readme」ファイルの情報に優先しま
          す。
        * Compiler Collection のマニュアル: 製品のマニュアルページ、
          HTML 版の Readme、およびマニュアルは、
          /opt/SUNWspro/docs/ja/index.html からアクセスできます。
        * Compiler Collection 開発者向けリソースポータル:Compiler
          Collection 関連のドキュメントについては、 Compiler Collection
          Developer Resources Portal (英語) を参照してください。 このポ
          ータルには、技術解説や知識ベースなども挙げられています。

     注 - Compiler Collection ソフトウェアがデフォルトの /opt 以外のデ
     ィレクトリにインストールされている場合は、システム上の対応するパス
     をシステム管理者に確認してください。



     ------------------------------------------------------------------

     B. Sun ONE Studio 8 dbx について

     dbx は、ソースレベルの対話型コマンド行デバッグツールです。このツー
     ルを使用して、プログラムを制御された方法で実行したり、停止したプロ
     グラムの状態を検査したりできます。 dbx によって、パフォーマンスデ
     ータの収集も含めて、プログラムの動的な実行を完全に制御できます。こ
     のリリースの dbx は、Solaris[tm] オペレーティング環境 (SPARC[tm]
     プラットフォーム版) とSolaris オペレーティング環境 (x86 プラットフ
     ォーム版) のバージョン 7、8、および 9 で動作します。



     ------------------------------------------------------------------

     C. 新規および変更された機能

     ここでは、dbx で新たに追加された機能と変更された機能を説明していま
     す。

        * このリリースの dbx では、C99 言語の次のデータ型をサポートする
          ようになりました。

             o _Complex
             o _Imaginary
             o double _Complex
             o double _Imaginary
             o long double _Complex
             o long double _Imaginary

          これらのデータ型を含む変数と式の値を出力できます。

        * このリリースの dbx は、Fortran 95 と C における OpenMP プログ
          ラムのデバッグをサポートします。dbx は、Fortran 95 コンパイラ
          および C コンパイラで生成された OpenMP コードが存在する状態
          で、スレッド、スタック、関数、パラメータ、および変数を正しく
          表示できます。

        * detach コマンド用の新しい -stop オプション

          detach -stop コマンドは、dbx を対象プログラムから切り離し、プ
          ロセスを停止状態にします。-stop オプションを使用することで、
          排他的なアクセスのためにブロックされる可能性のある、ほかの
          /proc ベースデバッグツールの一時的なアプリケーションを実行で
          きます。

        * 新しい -resumeone イベント修飾子

          イベントハンドラの新しい -resumeone 修飾子は、マルチスレッド
          プログラムで関数呼び出しを行う場合に便利です。



     ------------------------------------------------------------------

     D. ソフトウェアの修正事項

     ここでは、今回の dbx リリースで修正された問題点について説明しま
     す。

       1. thread -blocks コマンドと thread -syncs コマンドが動作するよ
          うになった
       2. 表示オプションの -L が無視されることがなくなった
       3. Fortran で "volatile" を使用しても dbx のセグメント例外が起き
          なくなった
       4. このリリースの dbx では、起動時に C99 可変長配列のサイズを計
          算できるようになった
       5. rtc_auto_suppress 環境変数が機能するようになった

       1. thread -blocks コマンドと thread -syncs コマンドが動作するよ
          うになった (4307236)

          thread -blocks コマンドと thread -syncs コマンドは、32 ビット
          アプリケーションのデバッグ時に 64 ビットカーネルを使用した
          Solaris 7 オペレーティング環境で正常に動作するようになりまし
          た。

       2. 表示オプションの -L が無視されることがなくなった (4687714)

          IDE で dbx Debugger 上で -L を指定して大きなオブジェクトを表
          示する場合、(step コマンド、next コマンド、ブレークポイントな
          どによって) 次にデバッガが 停止すると -L が無視されます。(修
          正済み)

       3. Fortran で "volatile" を使用しても dbx のセグメント例外が起き
          なくなった (4756742)

          Fortran プログラムで volatile 変数を出力しようとすると、dbx
          セグメント例外が発生します。(修正済み)

       4. このリリースの dbx では、起動時に C99 可変長配列のサイズを計
          算できるようになった (4768919)

          可変長配列のサイズは実行時に決定されます。 配列を宣言するスコ
          ープに対してプログラムを実行する前に可変長配列のサイズを計算
          するように指定すると (print sizeof vla など) 、dbx はセグメン
          ト例外を起こします。

       5. rtc_auto_suppress 環境変数が機能するようになった (4666484)

          実行時検査により重複したエラーを抑制し、1 つの場所でのエラー
          報告を 1 に限定できます。この動作は、rtc_auto_suppress 環境変
          数で制御します。しかし、この制御が機能しないというケースがす
          でに 1 つわかっています (RUI エラー)。



     ------------------------------------------------------------------

     E. 問題点と回避策

     ここでは、これまでにわかっているソフトウェアの問題点とその回避策に
     ついて説明します。更新情報については、アップデート情報
     http://sun.co.jp/software/sundev/suncc/hotnews.html を参照してくだ
     さい。

       1. 名前を持たない型のテンプレートパラメータを dbx で出力できない
       2. 局所変数の監視中に SIGKILL シグナルで終了することがある
       3. dbx がプロセスに接続されると、データ収集で問題が発生する
       4. -xcheck = stkovf を指定すると実行時検査が行われない
       5. Solaris 7 オペレーティング環境で 64 ビット dbx を使用すると、
          ランダムなセグメント例外が生じる
       6. RTC は、埋め込み構造体の複製をエラーと考える
       7. dbx は、内部クラスを指すポインタのコンテンツを表示できない

       1. 名前を持たない型のテンプレートパラメータを dbx で出力できない
          (4058205)

          dbx は、名前を持たない型のテンプレートパラメータを出力できま
          せん。

       2. 局所変数の監視中に SIGKILL シグナルで終了することがある

          Solaris 7 オペレーティング環境が動作する SPARC プラットフォー
          ムで、stop modify で変更時ブレークポイントを設定して局所変数
          を監視すると、dbx が SIGKILL シグナルで終了したりハングアップ
          したりすることがあります。この問題は、Solaris 8 オペレーティ
          ング環境 または Solaris 9 オペレーティング環境が動作する
          SPARC プラットフォーム、および Intel プラットフォームでは発生
          しません。

       3. dbx がプロセスに接続されると、データ収集で問題が発生する

          コレクタライブラリ libcollector.so を事前に読み込まずに実行プ
          ロセスに dbx を接続すると、多数のエラーが発生します。

             o トレーシングデータを収集することはできません。トレーシン
               グデータとは、同期待機トレーシング、ヒープトレーシング、
               MPI トレーシングなどです。トレーシングデータはさまざまな
               ライブラリへの割り込み処理によって収集されます。
               libcollector.so が事前にロードされていない場合、割り込み
               処理ができなくなります。
             o dbx がプロセスに接続されたあとにシグナルハンドラがインス
               トールされ、そのシグナルハンドラが SIGPROF および SIGEMT
               信号を通過しない場合、プロファイリングデータと標本データ
               が失われます。
             o プログラムが非同期入出力ライブラリ libaio.so を使用して
               いる場合、クロックベースのプロファイリングデータと標本デ
               ータが失われます。libaio.so は、非同期の取り消し操作のた
               めに SIGPROF を使用するためです (4397578)。
             o プログラムがハードウェアカウンタライブラリ libcpc.so を
               使用している場合、ハードウェアカウンタのオーバーフロープ
               ロファイリング実験は失敗します。コレクタとプログラムの両
               方がそのライブラリを使用しているためです。dbx がプロセス
               に接続された後にハードウェアカウンタライブラリが読み込ま
               れた場合、libcpclibrary 関数への参照が libcpc.so の検索
               ではなく通常の検索によって解決されれば、ハードウェアカウ
               ンタの実験は成功します。
             o プログラムが setitimer(2) を呼び出す場合、クロックベース
               のプロファイリング実験は失敗することがあります。コレクタ
               とプログラムの両方がタイマーを使用しているためです。

       4. -xcheck = stkovf を指定すると、実行時検査が行われない

          -xcheck = stkovf を指定すると、実行時検査は行われません。rua
          (Read From Unallocated Memory) エラーが返されます。

       5. Solaris 7 オペレーティング環境で 64 ビット dbx を使用すると、
          ランダムなセグメント例外が生じる (4716507)

          dbx の vnsprintf() には、Solaris 7 オペレーティング環境で使用
          するとセグメント例外を起こすというバグがあります。

          回避策:
             o バージョン 8 またはバージョン 9 の Solaris オペレーティ
               ング環境だけを使用する
             o 32 ビットアプリケーションをデバッグする場合は、次に示す
               ように _DBX_EXEC_32 環境変数を設定するか、

               setenv _DBX_EXEC_32

               あるいは、次に示すように -x exec32 オプションを指定して
               dbx を起動する

               dbx -x exec32

             o 該当する Solaris 7 オペレーティング環境パッチを適用する
                  + SPARC[tm] プラットフォーム版の場合は 106541-23
                  + x86 プラットフォーム版の場合は 106542-23

       6. RTC は、埋め込み構造体の複製をエラーと考える (4460536)

          実行時検査を有効にすると、データ領域間にギャップ (隙間または
          パディング) のある構造体がコピーされる場合に RUI (初期化され
          ていないメモリーからの読み取り) エラーが生成されます。

       7. dbx は、内部クラスを指すポインタのコンテンツを表示できない
          (4827831)

          dbx では、コマンド print *p (p は入れ子になったクラス (構造
          体) を指すポインタ) は内部エラーとなります。



     ------------------------------------------------------------------

     F. 制限事項と互換性の問題

     Sun ONE Studio 8 dbx には次の制限があります。

        * 動作中のプロセスに .dbxrc から接続することはできません。この
          ため、.dbxrc ファイルに、コードを実行するコマンドを含めないで
          ください。ただし、別のファイル内にこのようなコマンドを入れて
          おき、dbx source コマンドを使用して、そのファイル内のコマンド
          を実行することはできます。

        * compat=4 のとき、dbx がメンバー関数に対するポインタを不正に復
          号化します。compat=5 では、この問題は発生しません。

          回避策: 次のコマンドを使って、プログラムを再コンパイルしてく
          ださい。

          CC -compat=4 -Qoption ccfe -abiopt=pmfun1

          このフラグによって ABI が変更されるため、正規の構築には使用し
          ないでください。

        * V9/V9 システムの場合、-g オプションと -O オプションの両方を使
          ってコンパイルされたコードとコードの間をまたぐようなスタック
          トレースを行うと、引数が整数型以外のとき不正な結果になりま
          す。 そのような関数の浮動小数点パラメータを表示しようとする
          と、次のエラーメッセージが表示されます。

          RegSet::getd('o1'): cannot -- will return 0.0

          回避策:-g のみ使用してください。

        * V9/V9 システムでは、call コマンドや表示関連の関数の呼び出しの
          引数または戻り値として小さな入れ子構造を使用することはできま
          せん。

        * 古い libC.so.5 または libC.so.4 を使用すると、C++ の例外領域
          で dbx に問題が発生します。不正なスタブや未処理の例外に関する
          警告メッセージが出力されることがあります。

          回避策: 最新の libC.so.5 をすべてのシステムにインストールして
          ください。

          libC.so.5 は、Sun ONE Studio 8, Compiler Collection のダウン
          ロードまたは http://sunsolve.sun.com で、各システムアーキテク
          チャの Solaris オペレーティング環境のバージョンごとに
          SUNWlibC のパッチとして提供されています。使用しているバージョ
          ンの Solaris オペレーティング環境およびシステムアーキテクチャ
          のパッチ番号については、『Sun ONE Studio 8, Compiler
          Collection リリースノート』を参照してください。docs.sun.com
          Web サイト http://docs.sun.com/ で検索できます。

        * Fortran の場合、実行時検査機能を最大限に活用するには、
          -stackvar コンパイラオプションを使用してください。

          プログラムによっては、-stackvar が正しく機能しないことがあり
          ます。 そのような場合は、-C コンパイラオプションを試してくだ
          さい。このオプションは、添字の検査を有効にします。

        * マルチスレッドアプリケーションで、fork の追跡が正しくないこと
          があります。

        * call コマンドまたは print コマンドによる関数呼び出しを使用す
          ると、マルチスレッドアプリケーションがデッドロック状態になる
          ことがあります。

        * ファイルがプリコンパイル済みヘッダー (PCH) によって収集された
          ものの一部であった場合は、ヘッダーファイルの変更に dbx の修正
          継続機能を使用しないでください。

        * dbx コマンド行インタプリタは、CSI (Code Set Independence) を
          サポートしない旧バージョンの Korn シェル (ksh) です。マルチバ
          イト文字は、dbx コマンド行に入力すると誤って解釈される場合が
          あります。

     ------------------------------------------------------------------

     G. 記述の誤りの訂正

     dbx ヘルプファイル (dbx コマンド行で help と入力してアクセスでき
     る) では、mi_mode 環境変数をこのリリースの新機能と説明しています
     が、この環境機能はまだ開発段階にあり、実用に対応していません。



     ------------------------------------------------------------------

     Copyright © 2003 Sun Microsystems, Inc., All rights reserved.
     Use is subject to license terms.Use is subject to license terms.
