Linux 4.12のソースコードを参照すると、タスクがの場合、の場合、以下のコードで頭を囲むことができません。waitpidとptraceはどのように連携しますか?
do_wait()
は、それがトレースされていることをすべてのスレッドの
wait_consider_task
を呼び出します
ptrace_do_wait(wo, tsk)
を呼び出します。その後、が返されますをwaitpidのものですPID [pid = task_pid_vnr(p);]
を見つけるターンコール
wait_task_stopped
のこの意志は、これは素晴らしいです。
しかし、それは、タスク構造体を解放します
put_task_struct(p);
を呼び出します。その場合、デバッガはこのプロセス/タスクを再びどのように待機しますか?このエントリーはどこかにもう一度追加されますか?
誰にでもこの流れを私に説明できますか?ありがとう。