跟踪程序在Linux下的执行的函数调用
时间:2011-07-06
来源:互联网
对于一个程序,通常我们可以使用gdb之类的调用工具设定断点进行调用。然而Linux系统提供了众多的跟踪工具,可以让我们在没有源代码的情况下跟踪程序都执行了哪些系统调用、动态库调用、栈情况以及接收信号等。可以让我们不停止程序来观察程序的执行流程。
作者: 熙佑 发布时间: 2011-07-06
strace 显示执行程序的系统调用及接收信号情况
strace [strace 选项] 可执行程序 可执行程序参数
选项说明:
-o filename 将输出写到文件filename中
-f 跟踪子进程的执行,适合多线程程序
-ff 如果使用了-o指定输出文件,则将每个子进程都写入到filename.pid中
-s strsize,指定最大字串大小,默认为32.
-r 打印相对时间戳
-t 打印实际时间 -tt 打印毫秒级 -ttt 打印微秒级时间
-x 将所有非ASCII字符串显示为十六进制字串
-xx 将所有字符串显示为十六进制
-P pid 附着于进程进行跟踪,并在ctrl+c后离开保持被跟踪程序执行。
-e key=[!]value[,value]或-evalue,只显示value的系统调用
key包括trace、abbrev、verbose、raw、signal、read、write,value为系统调用的符号。
strace [strace 选项] 可执行程序 可执行程序参数
选项说明:
-o filename 将输出写到文件filename中
-f 跟踪子进程的执行,适合多线程程序
-ff 如果使用了-o指定输出文件,则将每个子进程都写入到filename.pid中
-s strsize,指定最大字串大小,默认为32.
-r 打印相对时间戳
-t 打印实际时间 -tt 打印毫秒级 -ttt 打印微秒级时间
-x 将所有非ASCII字符串显示为十六进制字串
-xx 将所有字符串显示为十六进制
-P pid 附着于进程进行跟踪,并在ctrl+c后离开保持被跟踪程序执行。
-e key=[!]value[,value]或-evalue,只显示value的系统调用
key包括trace、abbrev、verbose、raw、signal、read、write,value为系统调用的符号。
作者: 熙佑 发布时间: 2011-07-06
例如-e trace=open。默认使用trace=all。
为了方便使用value定义了一些不同类型的系统调用:file代表所有文件相关调用,process涉及相关进程的调用,network涉及相关网络系统调用,signal代表所有信号相关的系统调用,此外还有ipc,desc。其他的key如abbrev、verbose、raw表示使用什么样的输出方式。signal可以跟踪特定信号集的接收情况。默认为signal=ALL,可以使用SIGIO这种方式。而read/write则可以指定跟踪写特定文件描述符的动作,并将读写数据以十六进制的方式打印出来。例如-e read=3,5
ltrace 显示执行程序的库调用及接收信号情况
其与strace的使用参数类似,支持-e -f -P -s -t -tt -tt -o -ff等参数,此外它还支持下面的一些参数
为了方便使用value定义了一些不同类型的系统调用:file代表所有文件相关调用,process涉及相关进程的调用,network涉及相关网络系统调用,signal代表所有信号相关的系统调用,此外还有ipc,desc。其他的key如abbrev、verbose、raw表示使用什么样的输出方式。signal可以跟踪特定信号集的接收情况。默认为signal=ALL,可以使用SIGIO这种方式。而read/write则可以指定跟踪写特定文件描述符的动作,并将读写数据以十六进制的方式打印出来。例如-e read=3,5
ltrace 显示执行程序的库调用及接收信号情况
其与strace的使用参数类似,支持-e -f -P -s -t -tt -tt -o -ff等参数,此外它还支持下面的一些参数
作者: 熙佑 发布时间: 2011-07-06
-C --demangle 转换低级编译器的符号令用户易看,例如C++等的mangle操作。
-l --library libname,lib... 只显示对libname中的库调用
-S 显示系统调用,-L 不显示库调用
-n num 当嵌套调用时,进行缩进显示
对于不同的库中的调用,列于/etc/ltrace.conf文件中
pstack 打印命中时程序的调用栈及相应参数
pstack pid即可
-l --library libname,lib... 只显示对libname中的库调用
-S 显示系统调用,-L 不显示库调用
-n num 当嵌套调用时,进行缩进显示
对于不同的库中的调用,列于/etc/ltrace.conf文件中
pstack 打印命中时程序的调用栈及相应参数
pstack pid即可
作者: 熙佑 发布时间: 2011-07-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28