我如何发现什么写到一个地址使用c++

How do I find out what writes to an address using C++?

本文关键字:一个 地址 c++ 何发现 发现 什么      更新时间:2023-10-16

我有一个地址,它被300个不同的指令写入到每秒1000次。我如何使用c++来找出写到某个地址的最后一条指令?

我已经这样做了,所以它提醒我一个特定的值被写入一个地址的实例,但是我怎么能让它打印最后一个指令地址,写了这个特定的值?

我会在调试器中这样做,但是我发现的所有调试器都不能处理在每秒变化1000次的地址上执行条件断点而不冻结程序。

如果我不能在c++中做到这一点,还有什么其他方法可以做到这一点?我需要找到什么地址指令将特定值写入内存地址,该地址每秒从不同地址接收超过1000次写入。

更新:

我使用Windows 7 x32为那些想知道。

看一下大头针。简而言之,pin允许您在x86指令级别检测代码,允许您根据需要跟踪读和/或写。我自己用它来模拟缓存性能,发现它相当快。

已经这样做了,所以它提醒我一个特定的值被写入一个地址的实例,但是我怎么能让它打印最后一个指令地址写了这个特定的值?

如果它只是用于一次性调试,请使用警告system/popen pstack (http://www.linuxcommand.org/man_pages/pstack1.html)或类似的代码-一些转储调用堆栈的外部程序。确切地说,使用哪个程序是高度依赖于操作系统的,而您并没有提到您的环境。(这是在无效内存访问等之后从信号处理程序生成调用堆栈的常用技术)