Come posso vedere quali chiamate di sistema sta effettuando il mio programma Java? C'è uno strumento che lo farà su Linux?Visualizzazione di tutte le chiamate di sistema effettuate da un programma Java
risposta
Uso strace:
strace java your_program
vedere ltrace http://linux.die.net/man/1/ltrace
ptrace potrebbe essere più utile in questo caso –
@MikeKwan 'ltrace' è per le chiamate alle funzioni di libreria e' ptrace' è per esaminare la memoria di altri processi. 'strace' è quello per le chiamate di sistema. –
Usa strace. Ma c'è un trucco per il mio caso. È necessaria l'opzione -f
. Ad esempio, il seguente codice:
public class Foo {
public static void main (String [] args) {
System.out.println("XXX");
}
}
Dopo l'esecuzione javac Foo.java
per compilarlo, strace java Foo 2>&1 | grep write
stampa nulla. Ma strace -f java Foo 2>&1 | grep write
stampe:
[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
mostra la chiamata di sistema fatto per System.out.println("XXX")
.
Potresti usare 'strace java your_program'? – chrisaycock
Ho provato e ha funzionato. Grazie – Ragini