Linux 如何在不终止追踪过程的情况下终止strace?
我正在尝试调试应用程序的启动。我想使用Linux 如何在不终止追踪过程的情况下终止strace?,linux,strace,Linux,Strace,我正在尝试调试应用程序的启动。我想使用strace来跟踪应用程序在启动期间执行的系统调用,但一旦应用程序启动,我就不希望出现strace的性能开销 如果您正常运行strace: strace -f myprogram 然后,如果您试图杀死strace,它将使myprogram与它一起倒下 您可以将strace附加到正在运行的进程,如下所示: strace -f -p <myprogram pid> strace-f-p 但是很难找到应用程序启动的痕迹 有没有一种方法可以捕获应用
strace
来跟踪应用程序在启动期间执行的系统调用,但一旦应用程序启动,我就不希望出现strace
的性能开销
如果您正常运行strace
:
strace -f myprogram
然后,如果您试图杀死strace
,它将使myprogram
与它一起倒下
您可以将strace
附加到正在运行的进程,如下所示:
strace -f -p <myprogram pid>
strace-f-p
但是很难找到应用程序启动的痕迹
有没有一种方法可以捕获应用程序启动的跟踪,然后分离strace?一种方法是使用
strace
的-D
标志,它将strace
进程作为被跟踪进程的后代运行
例如:
strace -f -D myprogram
将开始跟踪我的程序。现在运行:
killall strace
将终止
strace
进程,但myprogram
将继续运行。您也可以启动应用程序,然后使用strace-p
连接strace。显然,这不会跟踪应用程序的启动,但对于“在测试HTTP请求期间打开跟踪”之类的其他事情来说,这很方便。