linux中的strace

本文介绍了strace工具的基本使用方法及参数设置,展示了如何利用strace追踪系统调用、统计系统调用时间及跟踪现有进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         最近在看Brendan Gregg的Linux Performance Analysis and Tools在里面看到很多平时使用很少但是很强大的工具,如strace。

         strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)

时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

      

         strace命令参数

-p 跟踪指定的进程

-f 跟踪由fork子进程系统调用

-F 尝试跟踪vfork子进程系统调吸入,与-f同时出现时, vfork不被跟踪

-o filename 默认strace将结果输出到stdout。通过-o可以将输出写入到filename文件中

-ff 常与-o选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID文件

-r 打印每一个系统调用的相对时间-t 在输出中的每一行前加上时间信息。

-tt 时间确定到微秒级。还可以使用-ttt打印相对时间-v 输出所有系统调用。默认情况下,一些频繁调用的系统调用不会输出

-s 指定每一行输出字符串的长度,默认是32。文件名一直全部输出

-c 统计每种系统调用所执行的时间,调用次数,出错次数。

-e expr 输出过滤器,通过表达式,可以过滤出掉你不想要输出      

 

strace基本使用

追踪系统调用

[root@centos6-mysql-172 ~]# strace dd if=/dev/zero of=/dev/sde bs=1 count=2
execve("/bin/dd", ["dd", "if=/dev/zero", "of=/dev/sde", "bs=1", "count=2"], [/* 26 vars */]) = 0
brk(0)                                  = 0x2428000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe3aac74000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=41917, ...}) = 0
mmap(NULL, 41917, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe3aac69000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 #\240\244;\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=45690, ...}) = 0
mmap(0x3ba4a00000, 2128888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba4a00000
mprotect(0x3ba4a07000, 2093056, PROT_NONE) = 0
mmap(0x3ba4c06000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x3ba4c06000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\34\242\243;\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2013456, ...}) = 0
mmap(0x3ba3a00000, 3861056, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba3a00000
mprotect(0x3ba3ba5000, 2097152, PROT_NONE) = 0
mmap(0x3ba3da5000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a5000) = 0x3ba3da5000
mmap(0x3ba3dab000, 14912, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3ba3dab000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20o\340\243;\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=144698, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe3aac68000
mmap(0x3ba3e00000, 2217104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba3e00000
mprotect(0x3ba3e18000, 2097152, PROT_NONE) = 0
mmap(0x3ba4018000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x3ba4018000
mmap(0x3ba401a000, 13456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3ba401a000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe3aac67000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe3aac66000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe3aac65000
arch_prctl(ARCH_SET_FS, 0x7fe3aac66700) = 0
mprotect(0x3ba4c06000, 4096, PROT_READ) = 0
mprotect(0x3ba3da5000, 16384, PROT_READ) = 0
mprotect(0x3ba4018000, 4096, PROT_READ) = 0
mprotect(0x3ba341f000, 4096, PROT_READ) = 0
munmap(0x7fe3aac69000, 41917)           = 0
set_tid_address(0x7fe3aac669d0)         = 1621
set_robust_list(0x7fe3aac669e0, 0x18)   = 0
rt_sigaction(SIGRTMIN, {0x3ba3e069f0, [], SA_RESTORER|SA_SIGINFO, 0x3ba3e0f9f0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x3ba3e06a80, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x3ba3e0f9f0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
rt_sigaction(SIGUSR1, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGUSR1, {0x401be0, [INT USR1], SA_RESTORER, 0x3ba3a358d0}, NULL, 8) = 0
rt_sigaction(SIGINT, {0x401bd0, [INT USR1], SA_RESTORER|SA_NODEFER|SA_RESETHAND, 0x3ba3a358d0}, NULL, 8) = 0
brk(0)                                  = 0x2428000
brk(0x2449000)                          = 0x2449000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158576, ...}) = 0
mmap(NULL, 99158576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe3a4dd4000
close(3)                                = 0
open("/dev/zero", O_RDONLY)             = 3
dup2(3, 0)                              = 0
close(3)                                = 0
lseek(0, 0, SEEK_CUR)                   = 0
open("/dev/sde", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
dup2(3, 1)                              = 1
close(3)                                = 0
read(0, "\0", 1)                        = 1
write(1, "\0", 1)                       = 1
read(0, "\0", 1)                        = 1
write(1, "\0", 1)                       = 1
close(0)                                = 0
close(1)                                = 0
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 0
fstat(0, {st_mode=S_IFREG|0644, st_size=2512, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe3aac73000
read(0, "# Locale name alias data base.\n#"..., 4096) = 2512
read(0, "", 4096)                       = 0
close(0)                                = 0
munmap(0x7fe3aac73000, 4096)            = 0
open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = 0
fstat(0, {st_mode=S_IFREG|0644, st_size=435, ...}) = 0
mmap(NULL, 435, PROT_READ, MAP_PRIVATE, 0, 0) = 0x7fe3aac73000
close(0)                                = 0
write(2, "2+0 records in\n2+0 records out\n", 312+0 records in
2+0 records out
) = 31
write(2, "2 bytes (2 B) copied", 202 bytes (2 B) copied)    = 20
write(2, ", 0.00441172 s, 0.5 kB/s\n", 25, 0.00441172 s, 0.5 kB/s
) = 25
close(2)                                = 0
exit_group(0)                           = ?


系统调用统计

 

[root@centos6-mysql-172 ~]# strace -c dd if=/dev/zero of=/dev/sde bs=1 count=2                                                                                                                                                             
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.00324359 s, 0.6 kB/s
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000062           9         7           mprotect
  0.00    0.000000           0         7           read
  0.00    0.000000           0         5           write
  0.00    0.000000           0        25        16 open
  0.00    0.000000           0        12           close
  0.00    0.000000           0         7           fstat
  0.00    0.000000           0         1           lseek
  0.00    0.000000           0        17           mmap
  0.00    0.000000           0         2           munmap
  0.00    0.000000           0         3           brk
  0.00    0.000000           0         6           rt_sigaction
  0.00    0.000000           0         1           rt_sigprocmask
  0.00    0.000000           0         1         1 access
  0.00    0.000000           0         2           dup2
  0.00    0.000000           0         1           execve
  0.00    0.000000           0         1           getrlimit
  0.00    0.000000           0         1           arch_prctl
  0.00    0.000000           0         1           set_tid_address
  0.00    0.000000           0         1           set_robust_list
------ ----------- ----------- --------- --------- ----------------
100.00    0.000062                   101        17 total


这里可以看见一些errors,返回查看上面追踪系统调用中的信息,关于open系统调用的错误信息如下:

open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory)


关于access系统调用的错误信息如下:

access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

 

对系统调用进行计时

[root@centos6-mysql-172 ~]# strace -tttT  dd if=/dev/zero of=/dev/sde bs=1 count=2                                                                                                                                                        
1383203290.606138 execve("/bin/dd", ["dd", "if=/dev/zero", "of=/dev/sde", "bs=1", "count=2"], [/* 26 vars */]) = 0 <0.000170>
1383203290.606919 brk(0)                = 0x11cd000 <0.000018>
1383203290.607294 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffcbed79000 <0.000023>
1383203290.607593 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) <0.000023>
1383203290.607857 open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 <0.000025>
1383203290.608043 fstat(3, {st_mode=S_IFREG|0644, st_size=41917, ...}) = 0 <0.000019>
1383203290.608249 mmap(NULL, 41917, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ffcbed6e000 <0.000023>
1383203290.608409 close(3)              = 0 <0.000018>
1383203290.608591 open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3 <0.000067>
1383203290.608920 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 #\240\244;\0\0\0"..., 832) = 832 <0.000015>
1383203290.609098 fstat(3, {st_mode=S_IFREG|0755, st_size=45690, ...}) = 0 <0.000013>
1383203290.609294 mmap(0x3ba4a00000, 2128888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba4a00000 <0.000018>
1383203290.609463 mprotect(0x3ba4a07000, 2093056, PROT_NONE) = 0 <0.000018>
1383203290.609636 mmap(0x3ba4c06000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x3ba4c06000 <0.000023>
1383203290.609783 close(3)              = 0 <0.000017>
1383203290.610056 open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 <0.000021>
1383203290.610232 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\34\242\243;\0\0\0"..., 832) = 832 <0.000014>
1383203290.610429 fstat(3, {st_mode=S_IFREG|0755, st_size=2013456, ...}) = 0 <0.000013>
1383203290.610611 mmap(0x3ba3a00000, 3861056, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba3a00000 <0.000024>
1383203290.610836 mprotect(0x3ba3ba5000, 2097152, PROT_NONE) = 0 <0.000017>
1383203290.610903 mmap(0x3ba3da5000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a5000) = 0x3ba3da5000 <0.000028>
1383203290.611071 mmap(0x3ba3dab000, 14912, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3ba3dab000 <0.000026>
1383203290.611281 close(3)              = 0 <0.000018>
1383203290.611448 open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3 <0.000027>
1383203290.611642 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20o\340\243;\0\0\0"..., 832) = 832 <0.000021>
1383203290.611848 fstat(3, {st_mode=S_IFREG|0755, st_size=144698, ...}) = 0 <0.000036>
1383203290.612041 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffcbed6d000 <0.000021>
1383203290.612219 mmap(0x3ba3e00000, 2217104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba3e00000 <0.000024>
1383203290.612403 mprotect(0x3ba3e18000, 2097152, PROT_NONE) = 0 <0.000024>
1383203290.612561 mmap(0x3ba4018000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18000) = 0x3ba4018000 <0.000064>
1383203290.612878 mmap(0x3ba401a000, 13456, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3ba401a000 <0.000020>
1383203290.613074 close(3)              = 0 <0.000012>
1383203290.613170 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffcbed6c000 <0.000035>
1383203290.613455 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffcbed6b000 <0.000021>
1383203290.613767 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffcbed6a000 <0.000021>
1383203290.614042 arch_prctl(ARCH_SET_FS, 0x7ffcbed6b700) = 0 <0.000018>
1383203290.614288 mprotect(0x3ba4c06000, 4096, PROT_READ) = 0 <0.000024>
1383203290.614565 mprotect(0x3ba3da5000, 16384, PROT_READ) = 0 <0.000018>
1383203290.614770 mprotect(0x3ba4018000, 4096, PROT_READ) = 0 <0.000018>
1383203290.614840 mprotect(0x3ba341f000, 4096, PROT_READ) = 0 <0.000015>
1383203290.615002 munmap(0x7ffcbed6e000, 41917) = 0 <0.000025>
1383203290.615199 set_tid_address(0x7ffcbed6b9d0) = 1640 <0.000012>
1383203290.615363 set_robust_list(0x7ffcbed6b9e0, 0x18) = 0 <0.000012>
1383203290.615436 rt_sigaction(SIGRTMIN, {0x3ba3e069f0, [], SA_RESTORER|SA_SIGINFO, 0x3ba3e0f9f0}, NULL, 8) = 0 <0.000019>
1383203290.615764 rt_sigaction(SIGRT_1, {0x3ba3e06a80, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x3ba3e0f9f0}, NULL, 8) = 0 <0.000013>
1383203290.615968 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 <0.000013>
1383203290.616132 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 <0.000013>
1383203290.616382 rt_sigaction(SIGUSR1, NULL, {SIG_DFL, [], 0}, 8) = 0 <0.000018>
1383203290.616560 rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0 <0.000019>
1383203290.616892 rt_sigaction(SIGUSR1, {0x401be0, [INT USR1], SA_RESTORER, 0x3ba3a358d0}, NULL, 8) = 0 <0.000013>
1383203290.617087 rt_sigaction(SIGINT, {0x401bd0, [INT USR1], SA_RESTORER|SA_NODEFER|SA_RESETHAND, 0x3ba3a358d0}, NULL, 8) = 0 <0.000013>
1383203290.617391 brk(0)                = 0x11cd000 <0.000017>
1383203290.617631 brk(0x11ee000)        = 0x11ee000 <0.000022>
1383203290.617864 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 <0.000022>
1383203290.618036 fstat(3, {st_mode=S_IFREG|0644, st_size=99158576, ...}) = 0 <0.000013>
1383203290.618227 mmap(NULL, 99158576, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ffcb8ed9000 <0.000017>
1383203290.618393 close(3)              = 0 <0.000011>
1383203290.618547 open("/dev/zero", O_RDONLY) = 3 <0.000026>
1383203290.618848 dup2(3, 0)            = 0 <0.000016>
1383203290.619015 close(3)              = 0 <0.000016>
1383203290.619245 lseek(0, 0, SEEK_CUR) = 0 <0.000013>
1383203290.619418 open("/dev/sde", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 <0.000031>
1383203290.619616 dup2(3, 1)            = 1 <0.000011>
1383203290.619674 close(3)              = 0 <0.000016>
1383203290.619874 read(0, "\0", 1)      = 1 <0.000016>
1383203290.620054 write(1, "\0", 1)     = 1 <0.000677>
1383203290.620797 read(0, "\0", 1)      = 1 <0.000018>
1383203290.620967 write(1, "\0", 1)     = 1 <0.000017>
1383203290.621126 close(0)              = 0 <0.000013>
1383203290.621185 close(1)              = 0 <0.002093>
1383203290.623483 open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 0 <0.000026>
1383203290.624271 fstat(0, {st_mode=S_IFREG|0644, st_size=2512, ...}) = 0 <0.000012>
1383203290.624540 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffcbed78000 <0.000015>
1383203290.624610 read(0, "# Locale name alias data base.\n#"..., 4096) = 2512 <0.000027>
1383203290.626948 read(0, "", 4096)     = 0 <0.000014>
1383203290.627034 close(0)              = 0 <0.000012>
1383203290.627091 munmap(0x7ffcbed78000, 4096) = 0 <0.000020>
1383203290.627201 open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000018>
1383203290.627285 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000015>
1383203290.627360 open("/usr/share/locale-bundle/en_US.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000015>
1383203290.627434 open("/usr/share/locale-langpack/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.627504 open("/usr/share/locale/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.628663 open("/usr/share/locale-bundle/en_US.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000067>
1383203290.628806 open("/usr/share/locale-langpack/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000015>
1383203290.628881 open("/usr/share/locale/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000021>
1383203290.629071 open("/usr/share/locale-bundle/en_US/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000015>
1383203290.629145 open("/usr/share/locale-langpack/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.629215 open("/usr/share/locale/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.629287 open("/usr/share/locale-bundle/en.UTF-8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000013>
1383203290.629359 open("/usr/share/locale-langpack/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.629429 open("/usr/share/locale/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.629501 open("/usr/share/locale-bundle/en.utf8/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000013>
1383203290.629573 open("/usr/share/locale-langpack/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = -1 ENOENT (No such file or directory) <0.000014>
1383203290.629642 open("/usr/share/locale/en/LC_MESSAGES/coreutils.mo", O_RDONLY) = 0 <0.000017>
1383203290.629757 fstat(0, {st_mode=S_IFREG|0644, st_size=435, ...}) = 0 <0.000012>
1383203290.629930 mmap(NULL, 435, PROT_READ, MAP_PRIVATE, 0, 0) = 0x7ffcbed78000 <0.000015>
1383203290.629996 close(0)              = 0 <0.000011>
1383203290.630089 write(2, "2+0 records in\n2+0 records out\n", 312+0 records in
2+0 records out
) = 31 <0.000199>
1383203290.630362 write(2, "2 bytes (2 B) copied", 202 bytes (2 B) copied) = 20 <0.000016>
1383203290.630467 write(2, ", 0.00359507 s, 0.6 kB/s\n", 25, 0.00359507 s, 0.6 kB/s
) = 25 <0.000185>
1383203290.630769 close(2)              = 0 <0.000011>
1383203290.630845 exit_group(0)         = ?


跟踪一个现有的进程

[root@centos6-mysql-172 ~]# strace -p 1645
Process 1645 attached - interrupt to quit
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576
read(0, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1048576) = 1048576


strace非常强大,以后可以再工作中经常使用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值