ltrace的原理
来源:互联网 发布:路由器网管软件 编辑:程序博客网 时间:2024/04/29 04:25
ltrace的功能是能够跟踪进程的库函数调用,它是如何实现的呢?
在ltrace源代码从chinaunix.net中下载下来,做了一个粗略的分析。
ltrace其实也是基于ptrace。我们知道,ptrace能够主要是用来跟踪系统调用,那么它是如何跟踪库函数呢?
首先ltrace打开elf文件,对其进行分析。在elf文件中,出于动态连接的需要,需要在elf文件中保存函数的符号,供连接器使用。具体格式,大家可以参考elf文件的格式。
这样ltrace就能够获得该文件中,所有系统调用的符号,以及对应的执行指令。然后,ltrace将该指令所对应的4个字节,替换成断点。其实现大家可以参考Playing with ptrace, Part II。
这样在进程执行到相应的库函数后,就可以通知到了ltrace,ltrace将对应的库函数打印出来之后,继续执行子进程。
实际上ltrace与strace使用的技术大体相同,但ltrace在对支持fork和clone方面,不如strace。strace在收到frok和clone等系统调用后,做了相应的处理,而ltrace没有。
本文转自:http://blog.chinaunix.net/space.php?uid=20361370&do=blog&id=1962493
- ltrace的原理
- 使用strace,ltrace调试工具的乐趣
- 求助关于ltrace 静态编译的
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"[转载]
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"
- linux下的调试工具ltrace与strace
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"
- 使用strace, ltrace寻找故障原因的线索
- 使用truss、strace或ltrace诊断软件的"疑难杂症"
- phpmyadmin 尝试连接到 mysql 服务器 但服务器拒绝连接
- asp.net Eval如何格式化日期
- Android R.java不能生成
- Unity3d 动态加载fbx模型文件
- 求森林变换分水岭算法啊~~~matlab或者C++编写的
- ltrace的原理
- js中正则的常用验证
- 重装win7后恢复linux GRUB引导菜单的方法
- javascript和html判断浏览器类型
- andoid触摸事件处理
- 今天配置 windows 上的php 环境访问php页面时直接下载
- 学习WebService(一)
- Android改变ListView选中行字体颜色
- 内存泄漏检测和隔离----MSDN