strace是一个功能强大的工具,它可以显示由用户空间发出的所有系统调用。包括打开的文件描述符号,系统调用的参数,系统调用的返回值等。如果系统调用失败,则系统调用失败时候的错误符号(如ENOMEM)和对应的字符串(如out of memory)都会被记录下来。这些信息对于定位程序错误发生于哪个系统调用以及发生系统调用时的情况都有很清楚的记录。有了这些详细的信息,我们就可以从中找出对我们有用的信息,快速定位出现错误的地方,分析出现错误的原因,从而就解决了我们程序中的bug问题。
strace从内核中接收信息,这意味着一个程序无论是否以支持调试的方式被编译或是否被去掉了符号信息,都可以被跟踪。其也可以跟踪一个正在运行的程序。它生成的信息通畅用于错误报告。应用程序员可以依据这些错误报告找出系统的问题,同样若对于内核或者驱动开发人员来说,可以依据这些信息来检查驱动程序运行是否正常。
strace有一些常用的参数,了解这些参数的意义会让你使用strace的时候更加得心应手。
-t,该选项用来显示调用发生的时间;
-T,该选项用来显示调用花费的时间;
-e,限定被跟踪的调用类型;
-o,将输出重定向到一个文件中,默认情况下,信息将打印到stderr中
reference:LDD(3th)
阅读(797) | 评论(0) | 转发(0) |