我正在尝试调试应用程序的启动。我想使用strace跟踪应用程序在启动期间执行的系统调用,但是一旦应用程序启动,我就不需要strace的性能开销。

如果您正常运行strace:

strace -f myprogram

那么,如果您尝试杀死strace,它会把myprogram减少掉。

您可以将strace附加到正在运行的进程,如下所示:
strace -f -p <myprogram pid>

但是很难跟踪应用程序的启动。

有没有办法捕获应用程序启动的痕迹,然后分离strace?

最佳答案

一种方法是使用-Dstrace标志,该标志将strace进程作为被跟踪进程的后代运行。

例如:

strace -f -D myprogram

将开始跟踪myprogram。现在正在运行:
killall strace

将杀死strace进程,但myprogram将继续运行。

关于linux - 如何在不终止被跟踪进程的情况下杀死strace?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28531393/

10-15 01:23