【问题标题】:How do I kill strace without killing the process being traced?如何在不终止被跟踪进程的情况下终止 strace?
【发布时间】:2015-02-15 21:29:55
【问题描述】:

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

如果你正常运行strace:

strace -f myprogram

那么,如果你试图杀死strace,它会带走myprogram。

您可以将strace 附加到正在运行的进程,如下所示:

strace -f -p <myprogram pid>

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

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

【问题讨论】:

    标签: linux strace


    【解决方案1】:

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

    例如:

    strace -f -D myprogram
    

    将开始追踪myprogram。正在运行:

    killall strace
    

    将终止strace 进程,但myprogram 将继续运行。

    【讨论】:

    • 您也可以启动应用程序,然后使用strace -p &lt;PID&gt; 附加strace。显然,这不会跟踪应用程序的启动,但这对于“在此测试 HTTP 请求期间打开跟踪”等其他事情很方便。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多