进程无法启动,软件运行速度突然变慢,程序的"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输出信息的文件
网友评论