更新日付: 2003 年 3 月 25 日

Sun[tm] ONE Studio 8:dbx Readme


目次

  1. はじめに
  2. Sun ONE Studio 8 dbx について
  3. 新規および変更された機能
  4. ソフトウェアの修正事項
  5. 問題点と回避策
  6. 制限事項と互換性の問題
  7. 記述の誤りの訂正

 


A. はじめに

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

製品マニュアル

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

 


B. Sun ONE Studio 8 dbx について

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

 


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

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

 


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 を接続すると、多数のエラーが発生します。

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

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

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



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

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

    回避策:

    • バージョン 8 またはバージョン 9 の Solaris オペレーティング環境だけを使用する
    • 32 ビットアプリケーションをデバッグする場合は、次に示すように _DBX_EXEC_32 環境変数を設定するか、
      setenv _DBX_EXEC_32
      
      あるいは、次に示すように -x exec32 オプションを指定して dbx を起動する
      dbx -x exec32
      
    • 該当する 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 には次の制限があります。


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.