如何在不杀死被跟踪进程的情况下杀死 strace?
How do I kill strace without killing the process being traced?
我正在尝试调试应用程序的启动。我想使用 strace
来跟踪应用程序在启动期间执行的系统调用,但是一旦应用程序启动我不希望 strace
.[= 的性能开销18=]
如果你 运行 strace
通常:
strace -f myprogram
那么如果你试图杀死 strace
,它会带走 myprogram
。
您可以将 strace
附加到 运行ning 进程,如下所示:
strace -f -p <myprogram pid>
但是很难获得应用程序启动的痕迹。
有没有办法捕获应用程序启动的痕迹,然后分离 strace?
一种方法是使用 strace
的 -D
标志,运行 将 strace
进程作为被跟踪进程的后代。
例如:
strace -f -D myprogram
将开始追踪 myprogram
。现在运行宁:
killall strace
将终止 strace
进程,但 myprogram
将继续 运行。
我正在尝试调试应用程序的启动。我想使用 strace
来跟踪应用程序在启动期间执行的系统调用,但是一旦应用程序启动我不希望 strace
.[= 的性能开销18=]
如果你 运行 strace
通常:
strace -f myprogram
那么如果你试图杀死 strace
,它会带走 myprogram
。
您可以将 strace
附加到 运行ning 进程,如下所示:
strace -f -p <myprogram pid>
但是很难获得应用程序启动的痕迹。
有没有办法捕获应用程序启动的痕迹,然后分离 strace?
一种方法是使用 strace
的 -D
标志,运行 将 strace
进程作为被跟踪进程的后代。
例如:
strace -f -D myprogram
将开始追踪 myprogram
。现在运行宁:
killall strace
将终止 strace
进程,但 myprogram
将继续 运行。