从c ++程序中提取memtraces

时间:2013-12-26 19:10:28

标签: c++ memory valgrind mtrace

我对提取某个程序的内存访问感兴趣。

我正在寻找以下列表,例如特定执行:

[R\W]  [Address]   [numBytes]     
R         0x0000012d32a21   0x4

我已经尝试过valgrind和mtrace,以及他们的相关工具。

他们似乎都返回了更一般的统计数据或与内存泄漏相关的统计数据。

我对所有内存访问数据感兴趣。

我用谷歌搜索了几个小时,找到了很多处理这个问题的论文,但没有找到有效的开源代码。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以查看Pin

来自说明:

  

Pin是IA-32和IA的动态二进制检测框架   x86-64指令集架构,可以创建   动态程序分析工具。

你应该能够找到或写出一个能够满足你需要的东西。例如,this one.链接的示例几乎就是您要求的。您需要在检测中添加IARG_MEMORYREAD_SIZEIARG_MEMORYWRITE_SIZE,但这看起来非常简单。

答案 1 :(得分:1)

valgrind lackey工具应该为您提供所需的信息。

参见http://www.valgrind.org/docs/manual/lk-manual.html 选项--trace-mem = [默认:否]