我正在尝试调试应用程序的启动。我想使用strace
来获取应用程序在启动期间执行的系统调用的跟踪,但是一旦应用程序启动,我就不希望strace
的性能开销。
如果您正常运行strace
:
strace -f myprogram
然后,如果您尝试杀死strace
,则myprogram
将会失效。
您可以将strace
附加到正在运行的流程,如下所示:
strace -f -p <myprogram pid>
但是很难找到应用程序启动的痕迹。
有没有办法捕获应用程序启动的痕迹,然后分离strace?
答案 0 :(得分:6)
一种方法是使用-D
的{{1}}标志,该标志运行strace
进程作为被跟踪进程的后代。
例如:
strace
将开始跟踪strace -f -D myprogram
。现在正在运行:
myprogram
将终止killall strace
进程,但strace
将继续运行。