linux命令之调试工具strace的深入分析


Posted in PHP onJune 03, 2013

参考
1《linux的strace命令(详解).txt》 新浪电子书可下载
2man strace
一个基本上通用的 完整的用法:
strace -o output.txt -T -tt -e trace=all -p 28979
上面的含义是 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面。
必须记住的几个用法
1)strace -p pid  可以跟踪某个后台进程
2)strace -o filename 把跟踪结果输出到文件
3)strace -T 记录每个系统调用花费的时间,可以看看哪个系统调用时间长
4)strace -t (或者 -tt)记录每个系统调用发生是的时间(时分秒的格式)
5)strace -s 1024 显示系统调用参数时,对于字符串显示的长度, 默认是32,如果字符串参数很长,很多信息显示不出来。
6)strace -e trace=nanosleep 只记录相关的系统调用信息。
    -e trace=network // 只记录和网络api相关的系统调用
    -e trace=file // 只记录涉及到文件名的系统调用
    -e trace=desc // 只记录涉及到文件句柄的系统调用
还有其他的包括process,ipc,signal等。
一个经典的,通过strace查看一个进程所有相关打开文件的排查过程,参考《linux的strace命令(详解).txt》 新浪电子书可下载
如果开发程序没有一个强大的工具相伴,那么开发效率会非常低,甚至遇到问题无从下手. 现在开始学习linux下的强大的调试工具strace,并记录于此.
strace
1)类似于windows下的processexp.exe
   可以监控系统调用
2)类似于windows下的depand工具
   可以检查程序的依赖库. 比linux下的ldd更强大.
   参考:strace命令用法 
   点击下载
   案例:
strace帮助我解决不知日志文件被打印到哪的问题.
   用strace跟踪server
   /usr/bin/strace -p pid -o out.file
   然后执行client端,然后结束strace,查看out.file 搜索write,open的系统调用

PHP 相关文章推荐
如何删除多级目录
Oct 09 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
PHP数据库调用类调用实例(详细注释)
Jul 12 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
PHP二维数组排序简单实现方法
Feb 14 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
Nov 14 PHP
thinkphp实现附件上传功能
May 26 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
PHP strripos函数用法总结
Feb 11 PHP
实例化php类时传参的方法分析
Jun 05 PHP
PHP中strval()函数实例用法
Jun 07 PHP
如何使用Strace调试工具
Jun 03 #PHP
鸡肋的PHP单例模式应用详解
Jun 03 #PHP
phpize的深入理解
Jun 03 #PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 #PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 #PHP
深入PHP操作MongoDB的技术总结
Jun 02 #PHP
深入php数据采集的详解
Jun 02 #PHP
You might like
php download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
php在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP写日志的实现方法
2014/11/05 PHP
PHP 7的一些引人注目的新特性简单介绍
2015/11/08 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
jQuery DOM插入节点操作指南
2015/03/03 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
Vue.js:使用Vue-Router 2实现路由功能介绍
2017/02/22 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
python计算最小优先级队列代码分享
2013/12/18 Python
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
python实现梯度下降算法
2020/03/24 Python
python生成n个元素的全组合方法
2018/11/13 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
OpenCV+Python--RGB转HSI的实现
2019/11/27 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
python math模块的基本使用教程
2021/01/16 Python
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
为什么需要版本控制
2016/10/28 面试题
函授毕业生的自我鉴定
2013/11/26 职场文书
2014年网管工作总结
2014/12/11 职场文书
人事主管岗位职责
2015/02/04 职场文书