strace,truss,ltrace 使用

进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。

truss和strace用来跟踪一个进程的系统调用或信号产生的情况,而 ltrace用来跟踪进程调用库函数的情况。
跟踪一个进程的系统调用或信号产生的情况:
Linux (strace):
strace: 
    -p <pid>:      跟踪一个PID进程
    -f:            继续子进程的跟踪
    -T:            打印出每次调用所花费的时间,单位:秒
    -s:            打印字符串最大显示长度,默认32。但文件名总是显示完整
    -o <outfile>:  指定保存strace输出信息的文件
FreeBSD (truss):
truss:
    -p <pid>:      跟踪一个PID进程
    -f:            继续子进程的跟踪
    -D:            打印出每次调用所花费的时间,单位:秒
    -s:            打印字符串最大显示长度,默认32。但文件名总是显示完整
    -o <outfile>:  指定保存strace输出信息的文件
Linux(ltrace), 跟踪进程调用库函数的情况:
ltrace:
    -p <pid>:      跟踪一个PID进程
    -f:            继续子进程的跟踪
    -T:            打印出每次调用所花费的时间,单位:秒
    -t:            打印绝对时间戳
    -s:            打印字符串最大显示长度,默认32。但文件名总是显示完整
    -o <outfile>:  指定保存strace输出信息的文件
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容