一.简介

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)")。

最新文章

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

热门文章

  1. vue中使用echarts,地图上的涟漪特效大小设置
  2. CF1444C Team-Building
  3. UVA12267 Telephone Network
  4. 【GWAS】如何计算显著关联位点的表型解释率PVE(phenotypic variation explained)?
  5. CPU大小端模式及转换
  6. 简述安霸pipeline及其关键参数--raw域模块
  7. List 去重的 6 种方法,这个方法最完美!
  8. day20 系统优化
  9. Angular中@Output()的使用方法
  10. FileReader (三) - 网页拖拽并预显示图片简单实现