Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在不终止追踪过程的情况下终止strace?_Linux_Strace - Fatal编程技术网

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请求期间打开跟踪”之类的其他事情来说,这很方便。