background image

PHP 开发:linux 命令之调试工具 strace 使用说明

本篇文章是对调试工具 strace 的使用进行了详细的分析介绍,需要的朋友参考下

参考
1《linux 的 strace 命令(详解).txt

 

2man strace

 

一个基本上通用的 完整的用法:

strace -o output.txt -T -tt -e trace=all -p 28979

 

上面的含义是 跟踪 28979 进程的所有系统调用(-e trace=all),并统计系统调用的花费时
间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在 output.txt 文
件里面。

必须记住的几个用法

1)strace -p pid 可以跟踪某个后台进程
2)strace -o filename 把跟踪结果输出到文件
3)strace -T 记录每个系统调用花费的时间,可以看看哪个系统调用时间长
4)strace -t 

 

(或者 -tt)记录每个系统调用发生是的时间(时分秒的格式)

5)strace -s 1024 

 

显示系统调用参数时,对于字符串显示的长度, 默认是 32,如果字符

串参数很长,很多信息显示不出来。
6)strace -e trace=nanosleep 只记录相关的系统调用信息。
-e trace=network // 只记录和网络 api 相关的系统调用
-e trace=file // 只记录涉及到文件名的系统调用
-e trace=desc // 只记录涉及到文件句柄的系统调用
还有其他的包括 process,ipc,signal 等。
一个经典的,通过 strace 查看一个进程所有相关打开文件的排查过程,参考《linux 的
strace 命令(详解).txt

 

》 新浪电子书可下载

如果开发程序没有一个强大的工具相伴,那么开发效率会非常低,甚至遇到问题无从下手. 
现在开始学习 linux 下的强大的调试工具 strace,并记录于此.

strace

1)类似于 windows 下的 processexp.exe
可以监控系统调用
2)类似于 windows 下的 depand 工具
可以检查程序的依赖库. 比 linux 下的 ldd 更强大.
参考:strace

 

命令用法

§

案例:

strace 帮助我解决不知日志文件被打印到哪的问题.
用 strace 跟踪 server
/usr/bin/strace -p pid -o out.file
然后执行 client 端,然后结束 strace,查看 out.file 搜索 write,open 的系统调用