小编Gun*_*ohm的帖子

即使使用 -f(多线程父进程),Linux strace 也不跟随子进程

注意:有几个类似的问题,一般的答案是“如果要跟踪多线程进程或跟踪子进程,请使用 -f”。这对我没有帮助,因为我已经在使用 -f 了。

我需要跟踪一个 java 应用程序,它会定期启动一个子进程并执行一个脚本。我想查看提供给脚本的命令行参数,由于太复杂无法在这里解释的原因,我无法在脚本周围放置包装器。

我的问题是,跟踪 java 进程,我可以看到clone()系统调用,但我看不到clone().

这是一个最小的测试程序:

package exectest;
import java.io.IOException;
public class Exectest {
    public static void main(String[] args) {
        for (;;) {
            createProcess();
            try {
                Thread.sleep(15000);
            } catch (InterruptedException ex) {
                ;
            }
        }
    }
    static void createProcess()  {
        String[] params;
        params=new String[100000];
        for (int i=0; i<100000; i++) {
            params[i]=Integer.toString(i);
        }
        params[0]="echo";
        params[1]="test";
        try {
            Runtime.getRuntime().exec(params);
        } catch (IOException ex) {
            ;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

运行它并开始跟踪,产生:

# /path/to/java -version
java …
Run Code Online (Sandbox Code Playgroud)

linux strace

7
推荐指数
0
解决办法
5939
查看次数

标签 统计

linux ×1

strace ×1