有点out了,刚发现一个非常好用的系统调试工具,strace,用来跟踪进程或者程序的执行过程,打印出所有的内核态调用过程,例如文件的open, read 操作,可以用来调试程序的执行过程。
#跟踪ls命令的执行过程,将结果导向output.txt文件
#strace -o output.txt ls
输出的结果中每行开头都是系统的一个方法调用,如write. open等
#跟踪进程pid 3334的执行过(可以跟多个-p开关),打印出来最长80个字符,并且只打印出来open,read的相关操作
#strace -p 3334 -s 80 -e trace=open,read
可以用strace来调试apache的执行过程,进行配置的debug,例如apache在打开AllowOverride All时strace apache的进程会发现有很多open操作,apache需要遍历web目录下所有的目录查找.htaccess文件,当设置为none时open操作明显减少,可以结合压力测试看到效果,
上面说了trace只能跟踪内核态调用过程,不能跟踪用户态的操作,比如php页面进行的逻辑运算,数据库的操作等是不能跟踪的。
另: Mac OS上同功能的工具是dtruss
参考:
http://www.gnome.org/~newren/tutorials/developing-with-gnome/html/ch03s02.html
http://www.cyberciti.biz/tips/linux-strace-command-examples.html
http://humberto.digi.com.br/blog/2008/02/25/strace-on-mac-os-x-leopard/
2009-11-17 21:54:54, 1249 reviews, comment
send to mailbox
find使用非业余研究
少女,不点下广告吗!
all by shitou
blog comments powered by Disqus