我正在尝试调试应用程序的启动。我想使用strace
跟踪应用程序在启动期间执行的系统调用,但是一旦应用程序启动,我就不需要strace
的性能开销。
如果您正常运行strace
:
strace -f myprogram
那么,如果您尝试杀死
strace
,它会把myprogram
减少掉。您可以将
strace
附加到正在运行的进程,如下所示:strace -f -p <myprogram pid>
但是很难跟踪应用程序的启动。
有没有办法捕获应用程序启动的痕迹,然后分离strace?
最佳答案
一种方法是使用-D
的strace
标志,该标志将strace
进程作为被跟踪进程的后代运行。
例如:
strace -f -D myprogram
将开始跟踪
myprogram
。现在正在运行:killall strace
将杀死
strace
进程,但myprogram
将继续运行。关于linux - 如何在不终止被跟踪进程的情况下杀死strace?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28531393/