strace命令的使用
在Linux系统中, strace是一种相当有效的跟踪工具,它的主要特点是可以被用来监视系统调用。我们不仅可以用strace调试一个新开始的程序,也可以调试一个已经在运行的程序(这意味着把strace绑定到一个已有的PID上)。
strace有两种运行模式:
①是通过它启动要跟踪的进程
用法很简单,在原本的命令前加上strace
即可。比如我们要跟踪 “ping www.baidu.com
” 这个命令的执行,可以这样:
strace ping www.baidu.com
②是跟踪已经在运行的进程,在不中断进程执行的情况下,理解它的工作。 这种情况,给
strace
传递个-p pid
选项即可。比如,有个在运行的ping服务
,第一步,查看pid:
pidof ping
或
ps -ef | grep ping
得到其
pid 11375
,然后就可以用strace
跟踪其执行:
strace -p 11375
完成跟踪时,按
ctrl + C
结束strace
即可。
strace常用选项:
strace -tt -T -v -f -e trace=file -o /home/test/strace.txt -s 1024 -p 11375
-tt
在每行输出的前面,显示毫秒级别的时间
-T
显示每次系统调用所花费的时间
-v
对于某些相关调用,把完整的环境变量,文件stat结构等打出来。
-f
跟踪目标进程,以及目标进程创建的所有子进程
-e
控制要跟踪的事件和跟踪行为,比如指定要跟踪的系统调用名称
-o
把strace的输出单独写到指定的文件( /home/test/strace.txt )
-s
当系统调用的某个参数是字符串时,最多输出指定长度的内容,默认是32个字节
-p
指定要跟踪的进程pid, 要同时跟踪多个pid, 重复多次-p选项即可
strace查看系统调用
strace跟踪进程并查看系统调用情况:
strace -c -p 11375
需进程停止
或手动Ctrl + c
才会停止