具有内存内容的内存跟踪

Memory Trace with Memory Contents

我正在尝试获取一个简单程序的 运行 的内存跟踪,在其中我可以看到 地址和数据都是 read/written,例如W 0x7fffffffd928 4 0xe4d829d0 表示将 4 字节值 0xe4d829d0 写入地址 0x7fffffffd928.

Valgrind 中有一个工具(Lackey 工具),它只提供地址和数据长度。由于 Valgrind 工具的文档很差,我查看了 Valgrind 源代码,但似乎没有任何直接访问数据的方法。

另一种可能性似乎是英特尔的 Pin,但在阅读其文档后我也没有找到任何相关内容。

这似乎是一个非常简单的问题,但是,我无法弄清楚或找到任何解决方案。谢谢!

PIN 的关键功能是PIN_SafeCopy,必须用PIN_GetLockPIN_ReleaseLock 括起来。在 Philippe Teuwen's blog.

查看功能齐全的 PIN 工具