如何找出使用C ++写入地址的内容?

时间:2013-03-19 00:54:20

标签: c++ c debugging assembly

我有一个地址可以通过300条不同的指令写入每秒1000x。如何使用c ++找出写入地址的最后一条指令?

我已经做了它,所以它提醒我一个特定值写入地址的实例,但是如何让它打印写入该特定值的最后一个指令地址?

我会在调试器中执行此操作,但我发现的所有调试器都无法处理在每秒更改1000x而不冻结程序的地址上执行条件断点。

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

更新

我正在为那些想知道的人使用Windows 7 x32。

2 个答案:

答案 0 :(得分:1)

看看pin。简而言之,引脚允许您在x86指令级别检测代码,允许您随意跟踪读取和/或写入。我自己用它来模拟缓存性能并发现它相当快。

答案 1 :(得分:0)

  

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

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