Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

並列領域へのシングルステップ

dbx は、並列領域にシングルステップ実行できます。並列領域は OpenMP の実行時ライブラリから始まり呼び出されるため、実際には一回のシングルステップの中で、この目的で作成されたスレッドが実行時ライブラリを幾重にも呼び出しを行うことになります。並列領域にシングルステップ実行すると、最初にブレークポイントに到達したスレッドによってプログラムが停止します。このスレッドは、ステップを開始したマスターステップではなく、スレーブスレッドになります。

たとえば、Fortran コードを 「コンパイラによる OpenMP コードの変換」で参照し、マスタースレッド t@1 が行 10 にあると想定します。行 12 に対してシングルステップを実行すると、スレーブスレッド t@2t@3、および t@4 が生成され、実行時ライブラリ呼び出しを実行します。スレッド t@3 が最初にブレークポイントに到達し、プログラムの実行が停止します。このように、スレッド t@1 によって開始されたシングルステップ実行は、次のスレッドで終了します。t@3 この動作は、シングルステップ実行後も通常は以前と同じスレッドにいる普通のステップ実行とは異なります。