关于使用strace调试网络程序

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上了。就可以很快查处问题所在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值