追踪工具strace
2024-09-06 15:05:00
一.简介
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)")。
最新文章
- js处理匿名函数
- SQL Server Code tips (持续更新)
- LYDSY模拟赛day9 2048
- 误删除了mssql的表。 使用命令:drop table xxxx
- scala 隐式转换
- OSAL
- WCF入门(十一)---WCF安全
- 关于Weblogic 10.3.1集群及调优经历
- hdu 2583 permutation 动态规划
- Android----drawable state各个属性详解----ListView几个比较特别的属性:
- hdu 5954 -- Do not pour out(积分+二分)
- linux svn up 中文显示乱码解决办法
- Effective前端1---chapter 2 用CSS画一个三角形
- C#正则表达式MatchCollection类
- Flask-SQLAlchemy插件
- SQL之group by 和 having
- datetimerangepicker配置及默认时间段展示
- js模态窗口返回值(table)
- iOS数据存储类型 及 堆(heap)和栈(stack)
- sql server 简单语句整合