2017-01-10 2 views
2

Я пытаюсь extract things from a weird makefile, и я обнаружил, что Systemtap является потенциальным хорошим решением, поэтому я здесь:Получить новый PID из nd_syscall.vfork.return в SystemTap

я могу получить правильный pid()ppid() вызывается из нового процесс при зондировании с nd_syscall.clone.return, однако это не включает все vforks, которые я нашел в моем целевом скрипте.

Так что, когда я использую зонд nd_syscall.vfork.return, я обнаружил, что сообщение клонировать звонящий pid() и ppid() только я попытался получить возвращаемое значение vfork, но это не кажется, что новый PID (что я видел из многих связанных событий execve).

Я не могу использовать kprocess, так как я не хочу устанавливать информацию об отладке.

Каким образом можно получить правильный new_pid от vfork? Мне не хватало некоторых аргументов? Или я использовал неправильную функцию зонда? Должен быть способ, спасибо!

P.S. Я пробовал sysdig, но он пропускает много событий BTW.

ответ

1

Вы пробовали датчики следов ядра?

probe kernel.trace("sched_process_fork") { 
    printf("%d->%d\n", $parent->pid, $child->pid) 
} 
Смежные вопросы