strace
简介:
strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
语法格式:strace [参数]
常用参数:
-c 统计每一次调用所执行的时间,次数和出错的次数等
-d 输出strace关于标准错误的调试信息
-t 在输出中的每一行前加上时间信息
-f -F 跟踪由 fork,vfork的调用
-p pid 跟踪指定的进程pid. 多个pid使用多次-p
-s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
-o filename 将strace的输出写入文件filename
-e trace={} 只跟踪指定的系统
trace=set 例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
trace=file 只跟踪有关文件操作的系统调用.
trace=process 只跟踪有关进程控制的系统调用.
trace=network 跟踪与网络有关的所有系统调用.
trace=signal 跟踪所有与系统信号有关的系统调用
trace=ipc 跟踪所有与进程通讯有关的系统调用
示例:
strace -o whoami-strace.txt whoami
查看命令whoami
的系统调用
strace -p 141556 -p 75332 -o pid_strace.txt -e trace=signal -v -s 2048
跟踪两个pid的信号调用