idb freeze (gdb モードのみ)

指定したスレッドの実行属性を frozen に設定します。

構文

idb freeze [thread_set]

パラメーター

thread_set

スレッドセット。

説明

このコマンドは、指定したスレッドの実行属性を frozen に設定します。スレッドが指定されていない場合、デバッガーは現在のスレッドを使用します。

ジョブのスレッドセットの実行を再開する際、凍結スレッドは再開されません。

スレッドセットの指定には、適切な表記をしてください。例えば、スレッド 2 を凍結するには、次のコマンドを入力します。

idb freeze t:[2]

すべての OpenMP* スレッドは demo.c の行 8 から開始していることに注意してください。

(idb) 
					  idb target thread $currentopenmpteam
(idb) 
					  s
foo (tid=4) at /site/test/demo.c:8
8           int i = tid;

(idb) 
					   info thread
    1 initial thread 3074269856 (LWP 28383) [thawed] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,0), (1,0) 
    
    2 monitoring thread 3074263984 (LWP 28384) [thawed] stopped at  0xb751d3b6 in pthread_cond_timedwait@@GLIBC_2.3.2 from /lib/tls/libpthread-0.60.so
 
    3 openmp thread 3074194352 (LWP 28385) [thawed] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,1)
 
    4 openmp thread 3070229424 (LWP 28386) [thawed] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,2)
 
    5 openmp thread 3068128176 (LWP 28387) [thawed] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,3)
 
*   6 openmp thread 3066026928 (LWP 28388) [thawed] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,4)

最初の idb uninterrupt コマンドは、スレッド 2 がイベントで停止しないで実行するように設定します。idb target thread コマンドは、最後のイベントスレッド (ここではスレッド 6) を任意のムーバーコマンドのターゲットにします。このコマンドを省略して next を入力すると、デバッガーはすべての OpenMP* スレッドを進めようとするため、警告が表示され、デバッガーはコマンドを中断します。

(idb) 
					  idb uninterrupt t:[2]
(idb) 
					  idb target thread $lasteventingthread

idb freeze コマンドはスレッド 1、3、4 および 5 を凍結しますが、スレッド 6 は凍結解除されたままです。

(idb) 
					  idb freeze t:[1,3,4,5]
(idb) 
					  next
10          if (i % 2) {
(idb) 
					  next
13            i--;

最初の next コマンドは、凍結解除されているすべてのスレッド (ここではスレッド 6 のみ) を進めます。実行を停止しないため、スレッド 2 は next によって影響されないことに注意してください。凍結されたスレッドは行 8 から進みませんが、スレッド 6 は行 13 まで進みました。

info threads コマンドは、現在実行中でないスレッドのみを表示します。スレッド 2 は uninterrupt に設定されているため、info threads の出力に表示されないことに注意してください。

(idb) 
					  info thread
    1 initial thread 3074269856 (LWP 28383) [frozen] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,0), (1,0) 
    
    3 openmp thread 3074194352 (LWP 28385) [frozen] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,1)
 
    4 openmp thread 3070229424 (LWP 28386) [frozen] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,2)
 
    5 openmp thread 3068128176 (LWP 28387) [frozen] stopped at  0x80487a6 in foo at /site/test/demo.c:8 OpenMP team memberships: (8,3)
 
*   6 openmp thread 3066026928 (LWP 28388) [thawed] stopped at  0x80487c6 in foo at /site/test/demo.c:13 OpenMP team memberships: (8,4)

idb thaw コマンドは、凍結されているスレッドの凍結を解除し、next コマンドはすべてのスレッドを 1 行進めます。スレッド 1、3、4 および 5 は行 10 に、スレッド 6 は行 16 に進みました。

(idb) 
					  idb thaw t:[1,3,4,5]
(idb) 
					  idb target threads $currentopenmpteam
(idb) 
					  next
16          return;
(idb) 
					  info thread
    1 initial thread 3074269856 (LWP 28383) [thawed] stopped at  0x80487ac in foo at /site/test/demo.c:10 OpenMP team memberships: (8,0), (1,0)
 
    3 openmp thread 3074194352 (LWP 28385) [thawed] stopped at  0x80487ac in foo at /site/test/demo.c:10 OpenMP team memberships: (8,1)
 
    4 openmp thread 3070229424 (LWP 28386) [thawed] stopped at  0x80487ac in foo at /site/test/demo.c:10 OpenMP team memberships: (8,2)
 
    5 openmp thread 3068128176 (LWP 28387) [thawed] stopped at  0x80487ac in foo at /site/test/demo.c:10 OpenMP team memberships: (8,3)
 
*   6 openmp thread 3066026928 (LWP 28388) [thawed] stopped at  0x80487c9 in foo at /site/test/demo.c:16 OpenMP team memberships: (8,4)

関連情報


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