Linux中strace工具用法及跟踪分析应用

1、strace工具说明

strace命令 是一个集诊断、 调试、 统计与一体的工具, 我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析, 以达到解决问题或者是了解应用工作过程的目的。 当然strace与专业的调试工具比如说gdb之类的是没法相比的, 因为它不是一个专业的调试器。
strace的最简单的用法就是执行一个指定的命令, 在指定的命令结束之后它也就退出了。 在命令执行的过程中, strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。

root@:/# strace -h
usage: strace [-CdffhiqrtttTvVwxxy] [-I n] [-e expr]...
              [-a column] [-o file] [-s strsize] [-P path]...
              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]
   or: strace -c[dfw] [-I n] [-e expr]... [-O overhead] [-S sortby]
              -p pid... / [-D] [-E var=val]... [-u username] PROG [ARGS]

Statistics:
  -c             count time, calls, and errors for each syscall and report summary
  -C             like -c but also print regular output
  -O overhead    set overhead for tracing syscalls to OVERHEAD usecs
  -S sortby      sort syscall counts by: time, calls, name, nothing (default time)
  -w             summarise syscall latency (default is system time)

Filtering:
  -e expr        a qualifying expression: option=[!]all or option=[!]val1[,val2]...
     options:    trace, abbrev, verbose, raw, signal, read, write, fault
  -P path        trace accesses to path

Tracing:
  -b execve      detach on execve syscall
  -D             run tracer process as a detached grandchild, not as parent
  -f             follow forks
  -ff            follow forks with output into separate files
... ...

部分参数解释下:
1、-c 统计每一系统调用的所执行的时间,次数和出错的次数等.
2.、-d 输出strace关于标准错误的调试信息.
3、-f 跟踪由fork调用所产生的子进程.
4、-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
5、 -F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
6、 -h 输出简要的帮助信息.
7、 -i 输出系统调用的入口指针.
8、 -q 禁止输出关于脱离的消息.
9、 -r 打印出相对时间关于,每一个系统调用.
10、 -t 在输出中的每一行前加上时间信息.
11、 -tt 在输出中的每一行前加上时间信息,微秒级.
12、 -ttt 微秒级输出,以秒了表示时间.
14、 -v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
15、 -V 输出strace的版本信息.
16、 -x 以十六进制形式输出非标准字符串
17、 -xx 所有字符串以十六进制形式输出.
18、 -a column 设置返回值的输出位置.默认 为40.
19、 -e expr 指定一个表达式,用来控制如何跟踪.格式: [qualifier=][!]value1[,value2]…
20、 qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e
trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行历史记录里的命令,所以要使用\.
21、-e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
22、 -e trace=file 只跟踪有关文件操作的系统调用.
23、 -e trace=process 只跟踪有关进程控制的系统调用.
24、 -e trace=network 跟踪与网络有关的所有系统调用.
25、 -e strace=signal 跟踪所有与系统信号有关的 系统调用
26、 -e trace=ipc 跟踪所有与进程通讯有关的系统调用
27、 -e abbrev=set 设定strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all.
28、 -e raw=set 将指定的系统调用的参数以十六进制显示.
29、-e signal=set 指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号.
30、 -e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5
31、 -e write=set 输出写入到指定文件中的数据.
32、 -o filename 将strace的输出写入文件filename
33、 -p pid 跟踪指定的进程pid.
34、 -s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
35、 -u username 以username的UID和GID执行被跟踪的命令

二、实例使用strace跟踪aplay应用

[root@:~/Test]# strace -tt -T -f -e trace=file -s 1024 aplay Noise.wav

00:04:44.117838 execve("/usr/bin/aplay", ["aplay", "Noise.wav"], 0x7ee50d90 /* 16 vars */) = 0 <0.003587>
00:04:44.132930 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) <0.000999>
00:04:44.134991 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000180>
00:04:44.135656 openat(AT_FDCWD, "/lib/tls/v7l/neon/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000148>
00:04:44.136217 stat64("/lib/tls/v7l/neon/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000102>
00:04:44.136852 openat(AT_FDCWD, "/lib/tls/v7l/neon/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000149>
00:04:44.137429 stat64("/lib/tls/v7l/neon", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000105>
00:04:44.137895 openat(AT_FDCWD, "/lib/tls/v7l/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000125>
00:04:44.138381 stat64("/lib/tls/v7l/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000103>
00:04:44.138837 openat(AT_FDCWD, "/lib/tls/v7l/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000116>
00:04:44.139300 stat64("/lib/tls/v7l", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000103>
00:04:44.139787 openat(AT_FDCWD, "/lib/tls/neon/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000318>
00:04:44.140500 stat64("/lib/tls/neon/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000133>
00:04:44.141139 openat(AT_FDCWD, "/lib/tls/neon/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000139>
00:04:44.141780 stat64("/lib/tls/neon", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000117>
00:04:44.142293 openat(AT_FDCWD, "/lib/tls/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000181>
00:04:44.142843 stat64("/lib/tls/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000108>
00:04:44.143306 openat(AT_FDCWD, "/lib/tls/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000132>
00:04:44.143785 stat64("/lib/tls", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000107>
00:04:44.144235 openat(AT_FDCWD, "/lib/v7l/neon/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000128>
00:04:44.144717 stat64("/lib/v7l/neon/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000103>
00:04:44.145165 openat(AT_FDCWD, "/lib/v7l/neon/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000131>
00:04:44.145694 stat64("/lib/v7l/neon", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000107>
00:04:44.146149 openat(AT_FDCWD, "/lib/v7l/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000123>
00:04:44.146627 stat64("/lib/v7l/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000105>
00:04:44.147238 openat(AT_FDCWD, "/lib/v7l/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000129>
00:04:44.147734 stat64("/lib/v7l", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000105>
00:04:44.148239 openat(AT_FDCWD, "/lib/neon/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000127>
00:04:44.148724 stat64("/lib/neon/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000113>
00:04:44.149178 openat(AT_FDCWD, "/lib/neon/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000121>
00:04:44.149641 stat64("/lib/neon", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000105>
00:04:44.150298 openat(AT_FDCWD, "/lib/vfp/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000162>
00:04:44.151036 stat64("/lib/vfp", 0x7e9a31d8) = -1 ENOENT (No such file or directory) <0.000115>
00:04:44.151536 openat(AT_FDCWD, "/lib/librt.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.001553>
00:04:44.154805 openat(AT_FDCWD, "/lib/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000170>
00:04:44.155487 openat(AT_FDCWD, "/usr/lib/tls/v7l/neon/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000147>
00:04:44.487447 stat64("/usr/lib/tls/v7l/neon/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000295>
00:04:44.488879 openat(AT_FDCWD, "/usr/lib/tls/v7l/neon/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000287>
00:04:44.490407 stat64("/usr/lib/tls/v7l/neon", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000403>
00:04:44.491966 openat(AT_FDCWD, "/usr/lib/tls/v7l/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000355>
00:04:44.493147 stat64("/usr/lib/tls/v7l/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000226>
00:04:44.494153 openat(AT_FDCWD, "/usr/lib/tls/v7l/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000254>
00:04:44.495179 stat64("/usr/lib/tls/v7l", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000229>
00:04:44.496247 openat(AT_FDCWD, "/usr/lib/tls/neon/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000271>
00:04:44.497555 stat64("/usr/lib/tls/neon/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000306>
00:04:44.498642 openat(AT_FDCWD, "/usr/lib/tls/neon/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000266>
00:04:44.499671 stat64("/usr/lib/tls/neon", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000222>
00:04:44.501103 openat(AT_FDCWD, "/usr/lib/tls/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000265>
00:04:44.502674 stat64("/usr/lib/tls/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000243>
00:04:44.503784 openat(AT_FDCWD, "/usr/lib/tls/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000264>
00:04:44.504832 stat64("/usr/lib/tls", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000224>
00:04:44.505823 openat(AT_FDCWD, "/usr/lib/v7l/neon/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000350>
00:04:44.507680 stat64("/usr/lib/v7l/neon/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000163>
00:04:44.508370 openat(AT_FDCWD, "/usr/lib/v7l/neon/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000171>
00:04:44.509009 stat64("/usr/lib/v7l/neon", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000139>
00:04:44.509648 openat(AT_FDCWD, "/usr/lib/v7l/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000397>
00:04:44.510524 stat64("/usr/lib/v7l/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000164>
00:04:44.511296 openat(AT_FDCWD, "/usr/lib/v7l/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000172>
00:04:44.511935 stat64("/usr/lib/v7l", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000139>
00:04:44.512565 openat(AT_FDCWD, "/usr/lib/neon/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000278>
00:04:44.515058 stat64("/usr/lib/neon/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000154>
00:04:44.515720 openat(AT_FDCWD, "/usr/lib/neon/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000167>
00:04:44.516340 stat64("/usr/lib/neon", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000129>
00:04:44.516898 openat(AT_FDCWD, "/usr/lib/vfp/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000157>
00:04:44.517491 stat64("/usr/lib/vfp", 0x7e9a31c0) = -1 ENOENT (No such file or directory) <0.000134>
00:04:44.518110 openat(AT_FDCWD, "/usr/lib/libasound.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000321>
00:04:44.521197 openat(AT_FDCWD, "/lib/libatopology.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000202>
00:04:44.522106 openat(AT_FDCWD, "/usr/lib/libatopology.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000328>
00:04:44.524839 openat(AT_FDCWD, "/lib/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000313>
00:04:44.527287 openat(AT_FDCWD, "/lib/libdl.so.2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000302>
00:04:44.861310 openat(AT_FDCWD, "/lib/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000317>
00:04:44.863818 openat(AT_FDCWD, "/lib/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000269>
00:04:44.878186 stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9625, ...}) = 0 <0.000223>
00:04:44.879163 openat(AT_FDCWD, "/usr/share/alsa/alsa.conf", O_RDONLY|O_LARGEFILE) = 3 <0.000320>
00:04:44.891851 access("/etc/alsa/conf.d", R_OK) = 0 <0.000265>
00:04:44.892800 stat64("/etc/alsa/conf.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000166>
00:04:44.893662 openat(AT_FDCWD, "/etc/alsa/conf.d", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC|O_DIRECTORY) = 3 <0.000209>
00:04:44.895549 openat(AT_FDCWD, "/etc/alsa/conf.d/20-bluealsa.conf", O_RDONLY|O_LARGEFILE) = 3 <0.000226>
00:04:44.898381 access("/etc/asound.conf", R_OK) = -1 ENOENT (No such file or directory) <0.000176>
00:04:44.899105 access("/root/.asoundrc", R_OK) = -1 ENOENT (No such file or directory) <0.000163>
00:04:44.906229 stat64("/usr/share/alsa/cards/aliases.conf", {st_mode=S_IFREG|0644, st_size=1460, ...}) = 0 <0.000224>
00:04:44.907330 openat(AT_FDCWD, "/usr/share/alsa/cards/aliases.conf", O_RDONLY|O_LARGEFILE) = 3 <0.000216>
00:04:44.909891 openat(AT_FDCWD, "/usr/share/alsa/pcm/default.conf", O_RDONLY|O_LARGEFILE) = 4 <0.000238>
00:04:44.912895 openat(AT_FDCWD, "/usr/share/alsa/pcm/dmix.conf", O_RDONLY|O_LARGEFILE) = 4 <0.000236>
00:04:44.916297 openat(AT_FDCWD, "/usr/share/alsa/pcm/dsnoop.conf", O_RDONLY|O_LARGEFILE) = 4 <0.000291>
00:04:44.920264 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000332>
00:04:44.922354 stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9625, ...}) = 0 <0.000187>
00:04:44.923655 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000357>
00:04:44.925221 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 3 <0.000237>
00:04:44.927795 access("/usr/share/alsa/cards/wm8960-audio.conf", R_OK) = -1 ENOENT (No such file or directory) <0.000204>
00:04:44.928665 openat(AT_FDCWD, "/dev/snd/controlC1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000258>
00:04:44.929460 openat(AT_FDCWD, "/dev/aloadC1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000226>
00:04:44.930434 openat(AT_FDCWD, "/dev/snd/controlC2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000263>
00:04:44.931357 openat(AT_FDCWD, "/dev/aloadC2", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000231>
00:04:44.932155 openat(AT_FDCWD, "/dev/snd/controlC3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000292>
00:04:44.938843 openat(AT_FDCWD, "/dev/aloadC3", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000223>
00:04:44.939606 openat(AT_FDCWD, "/dev/snd/controlC4", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000476>
00:04:44.940659 openat(AT_FDCWD, "/dev/aloadC4", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000231>
00:04:44.941544 openat(AT_FDCWD, "/dev/snd/controlC5", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000206>
00:04:44.942231 openat(AT_FDCWD, "/dev/aloadC5", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000260>
00:04:44.942971 openat(AT_FDCWD, "/dev/snd/controlC6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000302>
00:04:44.943832 openat(AT_FDCWD, "/dev/aloadC6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000207>
00:04:44.944527 openat(AT_FDCWD, "/dev/snd/controlC7", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000202>
00:04:44.945198 openat(AT_FDCWD, "/dev/aloadC7", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000210>
00:04:44.945926 openat(AT_FDCWD, "/dev/snd/controlC8", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000205>
00:04:44.946595 openat(AT_FDCWD, "/dev/aloadC8", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000196>
00:04:44.947247 openat(AT_FDCWD, "/dev/snd/controlC9", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000202>
00:04:44.947908 openat(AT_FDCWD, "/dev/aloadC9", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000203>
00:04:44.948757 openat(AT_FDCWD, "/dev/snd/controlC10", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000211>
00:04:44.949471 openat(AT_FDCWD, "/dev/aloadC10", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000214>
00:04:45.281940 openat(AT_FDCWD, "/dev/snd/controlC11", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000442>
00:04:45.283639 openat(AT_FDCWD, "/dev/aloadC11", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000432>
00:04:45.284960 openat(AT_FDCWD, "/dev/snd/controlC12", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000354>
00:04:45.286262 openat(AT_FDCWD, "/dev/aloadC12", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000420>
00:04:45.287513 openat(AT_FDCWD, "/dev/snd/controlC13", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000353>
00:04:45.288686 openat(AT_FDCWD, "/dev/aloadC13", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000329>
00:04:45.289894 openat(AT_FDCWD, "/dev/snd/controlC14", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000371>
00:04:45.294539 openat(AT_FDCWD, "/dev/aloadC14", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000478>
00:04:45.296156 openat(AT_FDCWD, "/dev/snd/controlC15", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000377>
00:04:45.297410 openat(AT_FDCWD, "/dev/aloadC15", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000424>
00:04:45.298661 openat(AT_FDCWD, "/dev/snd/controlC16", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000566>
00:04:45.300401 openat(AT_FDCWD, "/dev/aloadC16", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000398>
00:04:45.301945 openat(AT_FDCWD, "/dev/snd/controlC17", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000358>
00:04:45.303135 openat(AT_FDCWD, "/dev/aloadC17", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000414>
00:04:45.304347 openat(AT_FDCWD, "/dev/snd/controlC18", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000334>
00:04:45.305774 openat(AT_FDCWD, "/dev/aloadC18", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000426>
00:04:45.307024 openat(AT_FDCWD, "/dev/snd/controlC19", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000357>
00:04:45.308197 openat(AT_FDCWD, "/dev/aloadC19", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000330>
00:04:45.309388 openat(AT_FDCWD, "/dev/snd/controlC20", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000914>
00:04:45.311162 openat(AT_FDCWD, "/dev/aloadC20", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000464>
00:04:45.312686 openat(AT_FDCWD, "/dev/snd/controlC21", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000355>
00:04:45.313875 openat(AT_FDCWD, "/dev/aloadC21", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000323>
00:04:45.315085 openat(AT_FDCWD, "/dev/snd/controlC22", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000566>
00:04:45.316486 openat(AT_FDCWD, "/dev/aloadC22", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000345>
00:04:45.317713 openat(AT_FDCWD, "/dev/snd/controlC23", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000348>
00:04:45.318885 openat(AT_FDCWD, "/dev/aloadC23", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000349>
00:04:45.320477 openat(AT_FDCWD, "/dev/snd/controlC24", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000434>
00:04:45.325345 openat(AT_FDCWD, "/dev/aloadC24", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000462>
00:04:45.326738 openat(AT_FDCWD, "/dev/snd/controlC25", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000364>
00:04:45.327947 openat(AT_FDCWD, "/dev/aloadC25", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000422>
00:04:45.329392 openat(AT_FDCWD, "/dev/snd/controlC26", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000732>
00:04:45.331015 openat(AT_FDCWD, "/dev/aloadC26", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000392>
00:04:45.332538 openat(AT_FDCWD, "/dev/snd/controlC27", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000520>
00:04:45.666053 openat(AT_FDCWD, "/dev/aloadC27", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000425>
00:04:45.667665 openat(AT_FDCWD, "/dev/snd/controlC28", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000369>
00:04:45.668874 openat(AT_FDCWD, "/dev/aloadC28", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000468>
00:04:45.670590 openat(AT_FDCWD, "/dev/snd/controlC29", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000398>
00:04:45.672058 openat(AT_FDCWD, "/dev/aloadC29", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000344>
00:04:45.673299 openat(AT_FDCWD, "/dev/snd/controlC30", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000350>
00:04:45.674450 openat(AT_FDCWD, "/dev/aloadC30", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000337>
00:04:45.675888 openat(AT_FDCWD, "/dev/snd/controlC31", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000366>
00:04:45.677155 openat(AT_FDCWD, "/dev/aloadC31", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory) <0.000354>
00:04:45.679603 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000371>
00:04:45.682602 stat64("/usr/share/alsa/alsa.conf", {st_mode=S_IFREG|0644, st_size=9625, ...}) = 0 <0.000302>
00:04:45.684672 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.003410>
00:04:45.690440 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 3 <0.000411>
00:04:45.695952 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3 <0.000394>
00:04:45.698320 openat(AT_FDCWD, "/dev/snd/controlC0", O_RDWR|O_LARGEFILE|O_CLOEXEC) = 3 <0.000333>
00:04:45.701292 openat(AT_FDCWD, "/dev/snd/pcmC0D0p", O_RDWR|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC) = 4 <0.002961>
00:04:45.712560 openat(AT_FDCWD, "Noise.wav", O_RDONLY|O_LARGEFILE) = 3 <0.000339>
Playing WAVE 'Noise.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
00:04:47.266216 +++ exited with 0 +++

这里我们可以看到aplay应用除了一些库文件、配置文件的访问,还访问了/dev/snd/controlC0、/dev/snd/pcmC0D0p文件,读写这些文件会触发底层音频驱动的操作。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值