Linux系统中strace命令的使用

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才会停止

猜你喜欢

转载自blog.csdn.net/qq_39599464/article/details/114976495