Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用C+找出写入地址的内容+;?_C++_C_Debugging_Assembly - Fatal编程技术网

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

C++ 如何使用C+找出写入地址的内容+;?,c++,c,debugging,assembly,C++,C,Debugging,Assembly,我有一个地址,它被300条不同的指令写入到每秒1000倍。如何使用C++查找最后一个写入地址的指令? 我已经这样做了,当某个特定值写入某个地址时,它会提醒我,但如何让它打印写入该特定值的最后一个指令地址 我会在调试器中执行此操作,但我发现的所有调试器都无法处理在每秒更改1000x的地址上执行条件断点而不冻结程序 如果我不能在C++中这样做,我还能做什么其他方法呢?我需要找到哪个地址指令将特定值写入每秒从不同地址接收1000次写入的内存地址 更新: 我使用Windows7X32来帮助那些想知道的人

我有一个地址,它被300条不同的指令写入到每秒1000倍。如何使用C++查找最后一个写入地址的指令? 我已经这样做了,当某个特定值写入某个地址时,它会提醒我,但如何让它打印写入该特定值的最后一个指令地址

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

<>如果我不能在C++中这样做,我还能做什么其他方法呢?我需要找到哪个地址指令将特定值写入每秒从不同地址接收1000次写入的内存地址

更新:

我使用Windows7X32来帮助那些想知道的人

看一看。简单地说,pin允许您在x86指令级别插入代码,允许您随心所欲地跟踪读取和/或写入。我自己也用它来模拟缓存性能,发现它相当快

已经这样做了,当实例中某个特定值被写入某个地址时,它会提醒我,但是我如何让它打印写入该特定值的最后一个指令地址


如果只是为了一次性调试,请使用向system/popen
pstack
()发出警报的代码或类似的代码—一些转储调用堆栈的外部程序。具体使用哪个程序是高度依赖操作系统的,而且您对您的环境只字未提。(这是在无效内存访问等之后从信号处理程序生成调用堆栈的常用技术)

这还不完全清楚。C++代码与编译器生成的程序集之间没有直接映射。所以我认为你不能在C++级别上做这件事。你不能使用C++。您需要一个执行采样的性能监视器。您可以使用gdb设置条件断点,试试看。在x86处理器上可以设置数据断点。Windbg和其他调试器通过其命令公开此功能。例如,windbg的ba命令-您可以将“k;g;”命令与断点关联,这样您就不必在每次遇到断点时都键入它们。是否有与此相关的教程?我在谷歌上搜索了一下,但找不到,所以我真的不知道如何开始尝试。我已经下载了很多pin。我在Linux上使用过它,但在Windows上,它应该仍然可以工作,所以这里是这样的:从源代码获取“pinatrace”工具并在您的平台上运行(它是一个地址跟踪器)。在一个简单的程序上尝试一下(迭代一个int数组…你得到的地址每次增加4吗?)。当您对其进行了健全性检查后,开始修改它,以便根据要监视的地址选择性地进行跟踪。