-2

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

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

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

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

更新:

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

4

2 回答 2

1

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

于 2013-03-19T01:04:43.790 回答
0

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

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

于 2013-03-19T01:34:03.147 回答