指定した場所にスレッド同期ポイントを設定します。
func |
関数名。 |
line |
ソース・コード・ファイルの行番号。 |
addr |
アドレス。 |
thread_set |
スレッドセット。 |
cond |
条件式。デバッガーが指定した場所に到達し、この条件式の結果が TRUE の場合は実行が停止します。 |
このコマンドは、スレッド同期ポイントを設定します。
同期ポイントは、コードのアドレスです。同期化するスレッドが同期ポイントに達すると、デバッガーはスレッドを停止し、凍結します。同期化するすべてのスレッドが同期ポイントに達すると、同期ポイントがヒットします。デバッガーは、ヒットした後で、同期化されたスレッドの凍結を解除します。
ブレークポイントを定義する際、オプションでトリガーするスレッドを指定できるのに対し、同期ポイントでは同期化するスレッドを必ず指定します。この点を除き、同期ポイントとブレークポイントは、同じ属性を持ちます。
cond を指定すると、同期化スレッドがそのスレッドのコンテキスト内で同期ポイントに到達するたびに、デバッガーは条件を評価します。
同期ポイントのイベントスレッドとは、同期ポイントで最後に到着するスレッドです。
次の例では、idb synchronize コマンドで行 26 に同期ポイントを設定しています。info thread コマンドは、行 26 で停止したチームのすべてのスレッドを表示します。
(idb) idb synchronize 26, $currentopenmpteam Syncpoint 1 at 0x8048d0f: file /site/test/ds2.c, line 26, for threads $currentopenmpteam. (idb) r Starting program: /site/test/ds2 Syncpoint 1, main () at /site/test/ds2.c:26 26 foo(); (idb) info thread 1 initial thread 3069310336 (LWP 4837) [thawed] stopped at 0x8048d0f in main::L_main_24__par_region0_2_0 at /site/test/ds2.c:26 OpenMP team memberships: (8,0), (1,0) 2 monitoring thread 3069307824 (LWP 4838) [thawed] stopped at 0xb74333b6 in pthread_cond_timedwait@@GLIBC_2.3.2(...) from /lib/tls/libpthread-0.60.so 3 openmp thread 3069238192 (LWP 4839) [thawed] stopped at 0x8048d0f in main::L_main_24__par_region0_2_0 at /site/test/ds2.c:26 OpenMP team memberships: (8,1) 4 openmp thread 3066035120 (LWP 4840) [thawed] stopped at 0x8048d0f in main::L_main_24__par_region0_2_0 at /site/test/ds2.c:26 OpenMP team memberships: (8,2) 5 openmp thread 3063933872 (LWP 4841) [thawed] stopped at 0x8048d0f in main::L_main_24__par_region0_2_0 at /site/test/ds2.c:26 OpenMP team memberships: (8,3) * 6 openmp thread 3061832624 (LWP 4842) [thawed] stopped at 0x8048d0f in main::L_main_24__par_region0_2_0 at /site/test/ds2.c:26 OpenMP team memberships: (8,4)