追踪工具strace

2021-05-27 14:34:09 浏览数 (1)

一.简介

Linux 操作系统有很多用来跟踪程序行为的工具,内核态的函数调用跟踪用「strace」,用户态的函数调用跟踪用「ltrace」

这2个工具可以对系统进程进行跟踪,查看这个进程做了哪些操作和动作。如果strace没获取到数据,可以用ltrace看看。

二.例子

找出程序读取的文件

mysql首先尝试去/etc/mysql/my.cnf读取,没找到继续下一个 strace mysql 2>&1 | grep my.cnf

读取特定的部分,比如open或者start strace -e open mysql 2>&1 | grep my.cnf

查看现在程序在做什么

strace -p pid号

查看程序中哪个部分消耗大量cpu

等待一会,按ctrl-c退出,strace会列出如上的profiling数据。在当前例子中,占用最多的是 epoll_wait,然后百度这个函数,看看他是做什么的。 strace -c -p pid号

查看某个命令或者服务运行中的操作 strace -c >/dev/null 命令

无法连接服务器查看信息

使用nc去连接一个不存在的服务器的80端口,用于模拟访问不通的网站。 yum -y install nc strace -e poll,select,connect,recvfrom,sendto nc www.baidu.com 80

注意到尝试连接/var/run/nscd/socket?这意味着nc首先尝试连接NSCD–the Name Service Cache Daemon–它通常用来基于NIS,YP,LDAP或者类似的目录协议提供域名查询。在这里它失败了。

然后它连接DNS(DNS是port 53,所以”sin_port=htons(53)”)。

0 人点赞