dbx コマンドによるデバッグ

視覚化されたデータの分析

視覚化されたデータの更新方法は、更新内容によって異なります。たとえば、その必要に応じて、ブレークポイントで更新することも指定した時間間隔で更新することもできます。変更内容を表示したり、最終的な結果を分析したりすることができます。この節では、さまざまなシチュエーションのシナリオを想定しています。

Workshop には、dg_fexamp(Fortran) と dg_cexamp(C) の 2 つのサンプルプログラムが付属しています。データの視覚化を説明する以下のシナリオの中で、この 2 つのサンプルプログラムを使用します。

また、これらのプログラムは練習用にも使用できます。このサンプルプログラムは、install-dir/SUNWspro/WS5.0/examples/datagrapher にあります。ここで、デフォルトの install-dir/opt です。このプログラムを使用する場合は、このディレクトリに移動し、make と入力します。すると、実行可能プログラムが作成されます。

シナリオ 1: 同じデータを違う視点で表示させて比較する

同じデータを何回でもグラフ化できるため、グラフタイプを変えたり、データのセグメント変えたりして比較できます。

  1. C または Fortran のサンプルプログラムをロードします。

  2. プログラムの最後にブレークポイントを設定します。

  3. プログラムを起動し、ブレークポイントの位置まで実行します。

  4. 「デバッグ」ウィンドウの「式」フィールドに bf と入力します。

  5. 「データ」→「式をグラフ表示」を選択し、bf 配列の二次元の「表面」グラフを開きます。

  6. もう一度「データ」→「式をグラフ表示」を選択し、もう 1 つ同じグラフを開きます。

  7. 「オプション表示」をクリックし、グラフ種類で「等高線」を選択します。これで、異なるグラフタイプで表示された同じデータを比較できます (「表面」と「等高 線」)。

  8. 「式」フィールドに、Fortran のサンプルプログラムの場合は bf(1,:)、C のサンプルプログラムの場合は bf[1][..] と入力します。

  9. 次に、「データ」→「式をグラフ表示」を選択し、この bf 配列に入ったデータセクションのグラフを開きます。

これで、ここまでに表示させた同一データの異なるタイプの表示画面をすべて比較できます。

シナリオ 2: データのグラフを自動的に更新する

「更新時期」の「プログラム停止」オプションをオンにすると、グラフの更新を自動的に制御できます。この機能を使用すると、プログラムの実行中のデータの変化を比較できます。

  1. C または Fortran のサンプルプログラムをロードします。

  2. bf 関数の外側のループの最後にブレークポイントを設定します。

  3. プログラムを起動し、ブレークポイントの位置まで実行します。

  4. 「式」フィールドに bf と入力します。

  5. 「データ」→「式をグラフ表示」を選択します。ループの最初の反復が終わると、bf 配列内の値のグラフが表示されます。

  6. 「オプション表示」をクリックし、「更新時期」の「プログラム停止」を選択します。

  7. 「実行」→「継続」コマンドを選択し、このプログラムのほかのループの反復を複数実行させます。プログラムがブレークポイントで停止するごとに、グラフは、直前のループの反復で設定された値に更新されます。

  8. 各ブレークポイントでデータの最新のグラフを表示させたい場合は、この自動更新機能を使用すれば時間を節約できます。

シナリオ 3: プログラムの異なる箇所のデータグラフを比較する

グラフの更新は、手動でも制御できます。

  1. C または Fortran のサンプルプログラムをロードします。

  2. af 関数の外側のループの最後にブレークポイントを設定します。

  3. プログラムを起動し、ブレークポイントの位置まで実行します。

  4. 「式」フィールドに af と入力します。

  5. 「データ」→「式をグラフ表示」を選択します。ループの最初の反復が終わると、af 配列内の値のグラフが表示されます。このグラフでは、必ず自動更新機能はオフ (デフォルトの設定) にしておいてください。

  6. 「実行」→「継続」 コマンドを使用して、このプログラムのほかのループの反復を実行させます。

  7. 「データ」→「式をグラフ表示」を選択し、af 配列を表示した別のグラフを開きます。このグラフには、外側のループの 2 番目の反復に設定されたデータの値が使用されています。

  8. ここで、af 配列の 2 つのループの反復間でデータを比較できます。自動更新をオフに設定したグラフであれば、継続的に自動または手動で更新が行われているグラフに対する基準のグラフとして使用できます。

シナリオ 4: 同じプログラムを別々に実行した結果のデータグラフを比較する

同じプログラムを複数回実行させる場合、次にそのプログラムを実行させるまで前のデータグラフが画面に残っています。前にプログラムを実行したときのデータから作成したグラフは、手動で更新するか、または自動更新機能がオンになっていない限り上書きされません。

  1. C または Fortran のサンプルプログラムをロードします。

  2. プログラムの最後にブレークポイントを設定します。

  3. プログラムを起動し、ブレークポイントの位置まで実行します。

  4. 「式」フィールドに vec と入力し、「データ」→「式をグラフ表示」を選択します。

  5. vec 配列のグラフが表示されます (正弦波曲線で)。

  6. ここで、プログラムを編集できます (たとえば、sin を cos に置き換えるなど)。修正継続機能を使用し、プログラムの再コンパイルを行ってから作業を続行します (エディタの「修正」ツールバーボタンをクリックします)。

  7. プログラムを再起動します。

  8. 自動更新機能がオフになっているため、プログラムがブレークポイントに到達しても、前に作成されたグラフは更新されません。

  9. 「データ」→「式をグラフ表示」を選択し (vec が「式」フィールドに入力されたままの状態です)、現在の vec 値のグラフを、前の実行時に作成されたグラフと並べて表示します。

  10. これで、2 回の実行により作成されたそれぞれのグラフを比較できます。「グラフ更新」ボタンを使用して手動で更新した場合か、自動更新機能がオンになっている場合にだけ前の実行時のグラフは変更されます。