关于使用strace调试网络程序

来源:互联网 发布:云计算运维工程师招聘 编辑:程序博客网 时间:2024/06/06 12:46

strace 简介

strace 命令是一种强大的工具, 能够显示任何由用户空间程式发出的系统调用. strace 显示这些调用的参数并返回符号形式的值. strace 从内核接收信息, 而且无需以任何特别的方式来构建内核. strace 的每一行输出包括系统调用名称, 然后是参数和返回值.


比如close-wait状态过多的情况下

如果仅仅考虑服务代码有问题的话,可以考虑服务器代码在接受到fin后,没有发出fin。有可能没有调用close函数关闭socket。

还有可能是程序阻塞在某个io上。

那怎么快速定位到这行代码上呢。


就可以使用strace工具。


strace -o look_problem ./service_name


系统调用到结果就会放到look_problem文件中。 ./service_name是你的服务器的名字。


通过look_problem可以看到函数调用的结果,如果看到没有close函数的话,那说明可能是服务器在收到fin后没有调用close函数。

如果look_problem日志打在一个io函数上,那说明程序可能阻塞在某个io上了。就可以很快查处问题所在。

0 0
原创粉丝点击