strace命令来自英文单词“跟踪”,其功能是用于跟踪系统调用信息。strace命令是一个集诊断、调试、统计于一体的工具,可以对系统调用和信号传递的跟踪结果进行分析,从而解决问题。

Linux系统中进程不能直接访问硬件设备,当进程需要读取磁盘文件或接收网络数据时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。而strace命令则可以跟踪到一个进程产生的系统调用数据——包括参数,返回值,执行消耗时间等信息。

语法格式:strace [参数] [对象]

常用参数:

-a 设置返回值的输出位置
-c 显示执行时间、报错次数等信息
-d 使用调试模式
-e 指定一个表达式
-f 跟踪由fork调用所产生的子进程
-F 跟踪vfork调用
-h 显示帮助信息
-o 将输出结果写入到文件
-p 设置进程号码
-q 不显示离线消息
-r 显示系统调用的相对时间
-t 每一行前加上时间信息(秒)
-tt 每一行前加上时间信息(微秒级)
-T 显示每次调用所花费时间信息
-u 显示指定用户或用户组的信息
-v 显示所有的系统调用信息
-V 显示版本信息
-x 使用十六进制输出非标准字符串
-xx 使用十六进制输出所有字符串

参考示例

根据指定进程的系统调用:

[root@linuxcool ~]# strace -p 5188

根据指定进程的所有系统调用,并统计所花费时间(微秒级):

[root@linuxcool ~]# strace -T -tt -e trace=all -p 5188
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。