用strace跟踪系统调用

之前有新同事在问,strace的时候怎么样过滤掉某些系统调用这里简单总结下,希望对新同事有参考作用

 

部分跟踪举例:

1.     只跟踪epoll_waitgettimeofday,其他系统调用通通过滤掉,可以这样: strace -e trace=epoll_wait,gettimeofday(逗号分隔)

2.     过滤epoll_waitgettimeofday,其他系统调用通通跟踪,可以这样:strace -e trace=\!epoll_wait,gettimeofday(逗号分隔)

注意第2种情况在感叹号!前面有一个反斜线,防止被bash解释成自己的历史命令。

 

可以在常用的机器上定制自己的strace别名,方便使用,比方说我bashrc里面的:

alias syscall="strace -tt -T -s 200"

alias syscall2="sudo /usr/bin/strace -tt -T -s 200"

alias tracefd="strace -tt -T -s200 -etrace=send,recv,sendto,recvfrom,read,write,connect,socket,open,close"

alias tracefd2="sudo /usr/bin/strace -tt -T -s200 -etrace=send,recv,sendto,recvfrom,read,write,connect,socke

t,open,close"

 

 

调用次数、耗时统计:

strace -c

跟踪一段时间,然后CTRL^C终止查看结果。

 

跟踪子进程:

Strace p $pid

 

其他常用选项

-p 跟踪一个具体的进程

-s  指定要跟踪的字符串的长度。

-tt 统计系统调用的开始结束时间,单次调用耗时

-o 将输出重定向到文件。有时候输出非常庞大,屏幕滚动过快,需要先重定位到文件而后查看。

   或者使用2>outputfile, >前面之所以加是因为strace的输出在stderr而不是stdout

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值