首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ltrace (库跟踪工具)是如何工作的?

ltrace (库跟踪工具)是如何工作的?
EN

Stack Overflow用户
提问于 2015-08-25 21:06:16
回答 1查看 2.2K关注 0票数 5

追踪是怎么工作的?

它是如何发现程序调用库函数的?

是否有所有对库函数的调用都经过的公共代码路径?也许ltrace在这个公共代码路径中设置了断点?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 21:29:17

动态可执行文件具有链接器在解析需要连接到库函数的引用时使用的符号表。(通过运行objdump -T /path/to/binary,您可以自己看到这一点)。

这个符号表也可以被其他工具访问--比如ltrace --所以确定哪些函数需要连接并单独遍历列表是非常简单的。

请参阅在渥太华Linux专题讨论会上介绍的a talk on ltrace internals,该研讨会提供了详细的、按功能细分的功能;要遵循源代码,请参阅official repositorythird-party github mirror

一些较新的版本(最近的版本)也会挂起dlopen()调用,以便能够跟踪动态加载库的调用。这里的机制在思考时应该是相当明显的--如果一个人可以用一个垫片代替dlopen() (当dlopen()本身像上面那样被动态链接时),那么我们就可以在它返回的任何函数指针上设置一个断点。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32214079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档