gpt4 book ai didi

linux - ltrace(库跟踪工具)如何工作?

转载 作者:太空狗 更新时间:2023-10-29 11:43:23 42 4
gpt4 key购买 nike

ltrace 是如何工作的?

它如何找到该程序调用的库函数?

所有对库函数的调用是否有通用的代码路径?也许 ltrace 正在这个公共(public)代码路径中设置断点?

谢谢!

最佳答案

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

这个符号表也可以通过其他工具访问——例如 ltrace——所以确定哪些函数需要 Hook 并单独遍历该列表是微不足道的。

参见 a talk on ltrace internals在 Ottowa Linux 研讨会上发表,它提供了详细的、逐个功能的分割;要跟随来源,请参阅 official repository , 或 third-party github mirror .

一些较新的版本(比那个谈话更新)也 Hook dlopen() 调用,以便能够跟踪动态加载库的调用。片刻的想法应该是相当明显的机制——如果可以用垫片替换 dlopen()(当 dlopen() 本身如上所述动态链接时),然后可以在它返回的任何函数指针上设置断点。

关于linux - ltrace(库跟踪工具)如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214079/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com