免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1639 | 回复: 3
打印 上一主题 下一主题

怎么观察一个用户态程序的内核API调用情况 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-18 10:22 |只看该作者 |倒序浏览
比如一个用户态程序在反复申请、释放内存,,,,我想通过某个命令或者某个方法查看当前系统的内核API的调用情况,比如:
想看到下面类似的信息:
brk(0xc5673b000)                         = 0xffffffffc3527000
mmap2(NULL, 123985, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0xffffb5c3) = -1 ENOMEM (Cannot allocate memory) mmap2(NULL, 2023152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0xffffb254) = -1 ENOMEM (Cannot allocate memory) mmap2(NULL, 1048326, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0xffffb254) = -1 ENOMEM (Cannot allocate memory) mmap2(NULL, 2027152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0xffffb254) = -1 ENOMEM (Cannot allocate memory) mmap2(NULL, 1038576, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0xffffb254) = -1 ENOMEM (Cannot allocate memory)
....

这样的信息应该如何查看啊?请教一下。

[ 本帖最后由 simtiger 于 2009-8-18 10:23 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-08-18 10:23 |只看该作者
strace

论坛徽章:
0
3 [报告]
发表于 2009-08-18 13:47 |只看该作者
truss/strace/ltrace都可以,其实他们都是基于ptrace这个系统调用(attach到目标进程中的)
truss -o output.txt xxx
strace -f -o output.txt xxx
ltrace -p pid

论坛徽章:
0
4 [报告]
发表于 2009-08-18 16:17 |只看该作者
ftrace 中的function/function_graph tracer
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP