予測可能な場所にあるプロセスにアタッチするには、ループ関数をプログラムに追加し、デバッガーが制御をとり、割り込みをするまで実行を続けるようにする方法があります。
次のようなコードをアプリケーションに追加します。
volatile int endStallForDebugger=0;
void stallForDebugger()
{
while (!endStallForDebugger) ;
}
int main()
{
...
stallForDebugger();
...
}このバージョンのプログラムを実行します。
実行中のプロセスにデバッガーをアタッチします。
Ctrl+C または $stoponattach でプログラムを停止します。
set variable デバッガーコマンドを使用して、stallForDebugger 変数に非ゼロ値を代入し、プロセスを再開してループから出られるようにします。次に例を示します。
(idb) set variable endStallForDebugger = 1 (idb) # set any needed breakpoints, and so on (idb) cont