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 に答える