Giriş
Açıklaması şöyle.
Açıklaması şöyle.
Örnek
Şöyle yaparız.
Beliritlen sistem çağrısısını gösterir.
Açıklaması şöyle.
Açıklaması şöyle.strace is a diagnostic, debugging and instructional userspace utility for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state.
strace only shows when the process enters (and then leaves) the kernel due to a system call. Or when a unix signal is delivered. However there are other types of interrupts which strace does not show at all. So these include-c seçeneği
- Page faults.
- The timer interrupt. This is used to switch to a different process, when the current one has exhausted its allocated time slice on the CPU.
Açıklaması şöyle.
-cCount time, calls, and errors for each system call and report a summary on program exit. On Linux, this attempts to show system time (CPU time spent running in the kernel) independent of wall clock time. If -c is used with -f or -F (below), only aggregate totals for all traced processes are kept.
Şöyle yaparız.
strace -c -p 3569 # 3569 is PID
strace: Process 3569 attached
^Cstrace: Process 3569 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
99.73 0.016000 8 1971 poll
0.16 0.000025 0 509 75 futex
0.06 0.000010 0 1985 1966 recvmsg
0.06 0.000009 0 2336 mprotect
0.00 0.000000 0 478 read
0.00 0.000000 0 13 write
0.00 0.000000 0 29 mmap
0.00 0.000000 0 9 munmap
0.00 0.000000 0 18 writev
0.00 0.000000 0 351 madvise
0.00 0.000000 0 1 restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00 0.016044 7700 2041 total
-e seçeneğiBeliritlen sistem çağrısısını gösterir.
Örnek
futex sistem çağrısı için şöyle yaparız
$ strace -e futex ./sleepgranularityfutex(0x7fff800b3ad8, FUTEX_WAIT_PRIVATE, 0, {tv_sec=0, tv_nsec=4084}) = -1 ETIMEDOUT
(Connection timed out)
Örnek
open sistem çağrısı için şöyle yaparız.
open,read,write sistem çağrıları için şöyle yaparız.
strace -eopen someprogram
Örnekopen,read,write sistem çağrıları için şöyle yaparız.
some_command | strace -o less.trace -e open,read,write less
Örnek
openat,write,fork,vfork,clone,execve sistem çağrıları için şöyle yaparız
openat,write,fork,vfork,clone,execve sistem çağrıları için şöyle yaparız
$ strace -e trace=openat,read,write,fork,vfork,clone,execve -p 2883 2> bash.strace
Çıktı olarak şunu alırız.strace: Process 2883 attached
read(0, "l", 1) = 1
write(2, "l", 1) = 1
read(0, "s", 1) = 1
write(2, "s", 1) = 1
read(0, "\r", 1) = 1
write(2, "\n", 1) = 1
Örnek - delay
Şöyle yaparız
$ strace -e inject=unlink,unlinkat,rmdir:delay_enter=5s
-e unlink,unlinkat,rmdir
rm -rf /tmp/tmp.HudBncQ4Ni
unlinkat(4, "test", 0^Z
zsh: suspended strace -e inject=unlink,unlinkat,rmdir:delay_enter=10s -e rm -rf
Örnek - signal göndermek
Şöyle yaparız
strace -e inject=unlink,unlinkat,rmdir:signal=STOP
Örnek - sonuç dönmek
Şöyle yaparız
strace -e inject=unlink,unlinkat,rmdir:retval=0 -e unlink,unlinkat,rmdir ...
veya
zmodload zsh/system
strace -e inject=unlink,unlinkat,rmdir:error=EACCES -e unlink,unlinkat,rmdir ...
uygulama.pid
-o seçeneğiÇıktıyı dosyaya kaydetmek için kullanılır.
Örnek
Şöyle yaparız.
strace -ff -o TRACE java MyApp
-ttt seçeneğiTimestamp'i mikrosaniye olarak gösterir. Şöyle yaparız.
strace -ttt -T -C -w foo
-T seçeneğiSistem çağrısı içinde harcanan süreyi gösterir. Açıklaması şöyle.
time is shown in seconds, with microseconds (calculated from the nanosecond value) after the decimal point.Örnek
Şöyle yaparız.
strace -T sleep 2
Çıktı olarak şunu alırız.nanosleep({tv_sec=2, tv_nsec=0}, NULL) = 0 <2.000230>
Hiç yorum yok:
Yorum Gönder