使用strace, ltrace寻找故障原因的线索
来源:互联网 发布:淘宝ps修图 编辑:程序博客网 时间:2024/05/24 01:41
refer:http://blog.csdn.net/delphiwcdj/article/details/7387325
在GNU/Linux环境下,当程序出现“疑难杂症”的时候,如何快速定位问题呢?本文介绍strace/ltrace的一些使用方法,内容主要来自个人的读书笔记(可见参考文献)。strace/ltrace 是一类不错的工具,在工作中经常会用到,其主要可以用于:
(1) 了解一个程序的工作原理(可以了解Linux下很多常用的命令实现的原理);
(2) 帮助定位程序中的问题(在开发工作时帮助定位问题);
strace和ltrace的区别:
(1) strace —— Trace system calls and signals (跟踪一个进程的系统调用或信号产生的情况)
(2) ltrace —— A library call tracer (跟踪进程调用库函数的情况)
PS:
n strace最初是为SunOS系统编写的,ltrace最早出现在GUN/Debian Linux中,这两个工具现在已被移植到了大部分Unix系统中(可以通过which命令查找系统中是否存在此命令), 大多数Linux发行版都自带了strace和ltrace,没有的话也可以尝试手动安装它们。
n 关于系统调用和库函数的区别,APUE第一章有详细的介绍。
n strace和ltrace的使用方法基本相同。其中它们共同最常用的三个命令行参数是:
-f
除了跟踪当前进程外,还跟踪其子进程
-o file
将输出信息写到文件file中,而不是显示到标准错误输出(stderr)
-p PID
绑定到一个由PID对应的正在运行的进程,此参数常用来调试后台进程(守护进程)
n strace和ltrace的输出结果格式基本相似。以strace为例,每一行都是一条系统调用(ltrace为库函数),等号左边是系统调用的函数名及其参数,右边是该调用的返回值。
n 此类工具的原理是也大同小异,都是使用ptrace系统调用跟踪调试运行中的进程。
n 用调试工具实时跟踪程序的运行情况,不仅是诊断软件“疑难杂症”的有效手段,也可以帮助我们理清程序的“脉络”,即快速掌握软件的运行流程和工作原理,不失为一种学习源代码的辅助方法。
目录
0 一段简短的介绍...2
1 strace的基本使用方法...2
2 使用strace的各种选项—— 进一步帮助定位问题...4
(1) -i —— 找到地址方便GDB详细调试...4
(2) -p PID (或 -p `pidof ProcName`) —— attach到进程上,调试后台程序...5
(3) -o output.log —— 将strace信息输出到文件,方便进一步查找...7
(4) -f —— 跟踪fork之后的子进程...8
(5) -t / -tt —— 显示系统调用的执行时刻...8
(6) -e —— 显示指定跟踪的系统调用...9
(7) -s —— 指定系统调用参数的长度...9
3 用strace了解程序的工作原理...10
4 ltrace的基本使用方法...12
参考...13
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索(轉載)
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace, ltrace寻找故障原因的线索
- 使用strace,ltrace调试工具的乐趣
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"[转载]
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- ARM9时钟学习
- 美域高祝您工作愉快!
- Querying with EDM
- 零基础学习Shell编程
- dataTablesTD宽度问题
- 使用strace, ltrace寻找故障原因的线索
- activiti与spring集成配置
- 创建圆角窗体
- android 里面的 Drawable 和 ConstantState
- 美域高祝您工作愉快!~~~
- 多线程程序设计
- string(n,character)函数
- dl dt dd 实例
- Android进阶(十一)Android系统架构讲解