如何记录进程/文件的所有内存访问



为了测试缓存系统,我需要特定进程的内存访问(读取和写入)列表。缓存代码是用 verilog 编写的。我的应用程序用于媒体处理,但是我也对其他应用程序开放。到目前为止,我一直在 PNG 解码的C++代码中添加地址引用(可在此处获得 http://lodev.org/lodepng/)...

这是一个非常乏味的过程,我正在寻找替代方案。我什至尝试入侵诸如简单标量之类的基准测试以及读取故障转储,但无济于事......

提前感谢!

只要

您在x86上运行,就值得您花时间研究英特尔的Pin。

他们的手册有一个示例,如何使用 Pin 检测二进制文件以生成内存跟踪。

看看

https://lwn.net/Articles/257209/

一种工具是Cachegrind(瓦尔格林德的一部分)。它很慢,但可以告诉您有关内存访问的确切统计信息,因为它在虚拟处理器上模拟了整个程序。

另一个工具是Oprofile。它是一个使用统计采样来获取数据的内核模块。它没有那么准确,但重量要轻得多。

最新更新