指定したスレッドの実行属性を thawed (凍結解除) に設定します。
このコマンドは、指定したスレッドの実行属性を thawed (凍結解除) に設定します。スレッドが指定されていない場合、デバッガーは現在のスレッドを使用します。
ジョブのスレッドセット実行を再開すると、凍結解除されたスレッドが再開します。
スレッドセットの指定には、適切な表記をしてください。例えば、スレッド 2 の凍結を解除するには、次のコマンドを入力します。
idb thaw 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)