このトピックでは、標準AMDPのデバッグ中およびCDSテーブル関数のデバッグ中に発生する可能性のあるプロシージャの並列実行に関する問題について説明します。特に、共用体と結合で使用されるテーブル関数をデバッグするときに、この問題を考慮に入れることができます。
AMDPをデバッグする際のマルチスレッドの問題
選択したデバッガー設定とブレークポイントによっては、一部のプロシージャのみがデバッグモードで実行され、他のプロシージャは最適化モードで実行される可能性があります。
詳細:AMDPデバッガー設定
最適化モードで実行されるプロシージャは、呼び出されたプロシージャの並列実行をトリガーする可能性があります。これらの並列実行は、デバッグに影響を与える可能性があります。
次の例は、AMDPのこの種の状況を示しています。
-
プロシージャAはプロシージャBを複数回呼び出します。
-
手順Aは最適化モードで実行され、手順Bはデバッグモードで実行されます。プロシージャBのソースコードにはブレークポイントが含まれています。
-
プロシージャBの複数の呼び出しは、並列スレッドで同時に実行されます。
その後、AMDPデバッガーはプロシージャBのすべての並列スレッド実行を停止しますが、変数検査とユーザーコマンドのためにデバッガーがアクセスするのは最初のスレッドのみです。
[続行] (F8)または[ステップオーバー] ( )を選択するF6と、最初のスレッドは実行を続行し、残りのスレッドの1つはデバッガーアクセスのために停止します。
テーブル関数をデバッグするときのマルチスレッドの問題
マルチスレッドの問題は、テーブル関数がSQLステートメントによって並列に呼び出された場合にも発生する可能性があります。加入また連合句。その場合、別のブレークポイントを作成して問題を解決することはできず、説明されているマルチスレッドの問題は避けられません。