マルチスレッド アプリ用の小さなデバッグ プログラムを作成しています。私の考えは、たとえば100ナノ秒の間デバッグされているターゲットを実行し、一時停止してそのメモリを調べることです。ただし、これ(単なる疑似コード)
nanosleep(100); //sleep debuger for 100 nanosec and let a program run
kill(target_app_pid, SIGSTOP); //stop target app
nanosleep の直後にプロセス切り替えが発生し、ターゲットが必要に応じてより長く実行されるため、機能しません。プロセスに「定義された」タイムスライスを与えてから中断する方法はありますか? 私が想像できる唯一の解決策は、システム コールを追加し、スケジューラを修正して必要なものを実現することですが、これには多大な労力と多くのバグが想定されます。おそらく、デバッガープロセスの「リアルタイム」優先度を設定すると役立つでしょうか? それはきれいな解決策でしょうか?
また、ターゲット アプリのソース コードを実装できると仮定します。ある種のタイマーを設定し、(非常に短く正確な) 一定期間後にプロセス全体をスリープ状態にすることは可能ですか?