idb synchronize (gdb モードのみ)

指定した場所にスレッド同期ポイントを設定します。

構文

idb synchronize {func | line | *addr}, thread_set [if cond]

パラメーター

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)

関連情報


このヘルプトピックについてのフィードバックを送信