22/8/17深入理解计算机系统第七章笔记
7.13 库打桩机制
库打桩:允许截获对共享库的调用,转而执行自己的代码。使用这个机制可以追踪某个特殊库函数的调用次数,验证和追踪它的输入和输出值,或者替换它。
需要创建一个包装函数,原型和目标函数完全一样。通常包装函数执行自己的逻辑,然后调用目标函数,再返回目标函数。
打桩可以发生在编译时,链接时,加载时和运行时。
编译时打桩:打桩的编译器参数:P492
链接时打桩
编译时打桩需要能访问程序的源代码,链接时打桩需要能够访问程序的可重定位对象文件,运行时打桩需要能够访问可执行目标文件。
运行时打桩基于链接器的LD_PRELOAD环境变量,它被设置为一个共享库路径名的列表。解析未定义的引用时,动态链接器优先搜索这个库。
(有时间试试链接时打桩和运行时打桩)
7.14 处理目标文件的工具
AR、NM、SIZE、READELF、LDD
定义见书P496
标签:
深入理解计算机系统_学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现