如何在不杀死被追踪的过程的情况下杀死strace?

时间:2015-02-15 21:29:56

标签: linux strace

我正在尝试调试应用程序的启动。我想使用strace来获取应用程序在启动期间执行的系统调用的跟踪,但是一旦应用程序启动,我就不希望strace的性能开销。

如果您正常运行strace

strace -f myprogram

然后,如果您尝试杀死strace,则myprogram将会失效。

您可以将strace附加到正在运行的流程,如下所示:

strace -f -p <myprogram pid>

但是很难找到应用程序启动的痕迹。

有没有办法捕获应用程序启动的痕迹,然后分离strace?

1 个答案:

答案 0 :(得分:6)

一种方法是使用-D的{​​{1}}标志,该标志运行strace进程作为被跟踪进程的后代。

例如:

strace

将开始跟踪strace -f -D myprogram 。现在正在运行:

myprogram

将终止killall strace 进程,但strace将继续运行。