【问题标题】:Extracting memtraces from c++ programs从 C++ 程序中提取 memtraces
【发布时间】:2013-12-26 19:10:27
【问题描述】:

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

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

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

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

它们似乎都返回了更一般的统计信息或内存泄漏相关的统计信息。

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

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

感谢您的帮助

【问题讨论】:

  • 你可以尝试自己挂钩_sbrk()(如果你是'H@x0r',这没什么大不了的)...

标签: c++ memory valgrind mtrace


【解决方案1】:

您可以查看Pin

来自描述:

Pin 是 IA-32 和 x86-64 指令集架构,可以创建 动态程序分析工具。

您应该能够找到或编写一个可以满足您需要的 pintool。例如,this one. 链接的示例几乎正是您所要求的。您需要在检测中添加 IARG_MEMORYREAD_SIZEIARG_MEMORYWRITE_SIZE,但这看起来很简单。

【讨论】:

    【解决方案2】:

    valgrind 的走狗工具应该会为您提供所需的信息。

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

    【讨论】:

    • 完美运行。非常容易使用。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    相关资源
    最近更新 更多