2012-04-30 8 views

Trả lời

1
+0

ptrace có thể hữu ích hơn trong trường hợp này –

+2

@MikeKwan 'ltrace' là dành cho các cuộc gọi hàm thư viện và' ptrace' là để kiểm tra bộ nhớ của quá trình khác. 'strace' là lệnh gọi hệ thống. –

9

Sử dụng strace. Nhưng có là lừa cho trường hợp của tôi. Tùy chọn -f là cần thiết. Ví dụ, đoạn mã sau:

public class Foo { 
    public static void main (String [] args) { 
     System.out.println("XXX");  
    } 
} 

Sau khi chạy javac Foo.java để biên dịch nó, strace java Foo 2>&1 | grep write in gì cả. Nhưng strace -f java Foo 2>&1 | grep write in:

[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 cho thấy các cuộc gọi hệ thống được thực hiện cho System.out.println("XXX").