valgrind - 如何检测 valgrind 中寄存器 sp 的修改
问题描述
我想通过编写一个简单的 valgrind 工具来跟踪 x86_64 堆栈寄存器 (sp) 的修改。是否有其他工具可以跟踪 sp 的修改(或其他寄存器修改),我可以从中窥视和复制?我想我需要解析IRStmt
标记Ist_Put
并查找Put.offset == offset_SP
. 有没有已经做到这一点的工具?我想打印出写入 SP 的值。
解决方案
请参阅 pub_tool_tooliface.h。这定义了一堆 'void VG_(track_new_mem_stack*) 函数和 VG_(track_die_mem_stack*) 函数来跟踪对 SP 的更改。
除非您需要非常高性能的跟踪(例如 memcheck 需要),否则使用它应该足够好:
- VG_(track_new_mem_stack)
- VG_(track_new_mem_stack_signal)
- VG_(track_die_mem_stack)
- VG_(track_die_mem_stack_signal)
推荐阅读
- python - 这种写/读解决方案的方式安全吗?
- java - 如何结合 Places near api 和 Places details api?改造java rx
- c# - 保存按钮适用于“默认”结果集,但不适用于过滤结果集
- javascript - 在 nodejs 中排序不稳定,对内存使用有影响吗?
- scheme - 一个 `cond` 也是一个 `let`?
- botframework - 如何让机器人只向某些人发送消息
- google-cloud-platform - 获取使用资源的服务帐户
- python - 预填充 Flask SQLAlchemy 数据库
- swift - 在一个字符串中多次使用 NSAttributedString
- azure-application-gateway - Restrict access of the back-end pool form application gateway public ip