Javaプログラムが実行しているシステムコールを確認するにはどうすればよいですか?Linuxでこれを行うツールはありますか?
8199 次
3 に答える
15
straceを使用します。しかし、私の場合にはトリックがあります。オプション-fが必要で、と同じ--follow-forksです。たとえば、次のコードです。
public class Foo {
public static void main (String [] args) {
System.out.println("XXX");
}
}
実行javac Foo.javaしてコンパイルした後は、strace java Foo 2>&1 | grep write何も出力しません。しかし、strace -f java Foo 2>&1 | grep write印刷物:
[pid 11655] write(3, "0x63", 4) = 4
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(3, "\0", 1) = 1
[pid 11655] write(1, "XXX", 3XXX) = 3
[pid 11655] write(1, "\n", 1
[pid 11655] write(1, "XXX", 3XXX) = 3に対して行われたシステムコールを示していますSystem.out.println("XXX")。
于 2013-03-04T05:27:34.680 に答える
12
于 2012-04-30T15:58:30.323 に答える
1
ltracehttp://linux.die.net/man/1/ltraceを参照してください
于 2012-04-30T13:56:15.883 に答える