我如何发现什么写到一个地址使用c++
How do I find out what writes to an address using C++?
我有一个地址,它被300个不同的指令写入到每秒1000次。我如何使用c++来找出写到某个地址的最后一条指令?
我已经这样做了,所以它提醒我一个特定的值被写入一个地址的实例,但是我怎么能让它打印最后一个指令地址,写了这个特定的值?
我会在调试器中这样做,但是我发现的所有调试器都不能处理在每秒变化1000次的地址上执行条件断点而不冻结程序。
如果我不能在c++中做到这一点,还有什么其他方法可以做到这一点?我需要找到什么地址指令将特定值写入内存地址,该地址每秒从不同地址接收超过1000次写入。
更新:我使用Windows 7 x32为那些想知道。
看一下大头针。简而言之,pin允许您在x86指令级别检测代码,允许您根据需要跟踪读和/或写。我自己用它来模拟缓存性能,发现它相当快。
已经这样做了,所以它提醒我一个特定的值被写入一个地址的实例,但是我怎么能让它打印最后一个指令地址写了这个特定的值?
如果它只是用于一次性调试,请使用警告system/popen pstack
(http://www.linuxcommand.org/man_pages/pstack1.html)或类似的代码-一些转储调用堆栈的外部程序。确切地说,使用哪个程序是高度依赖于操作系统的,而您并没有提到您的环境。(这是在无效内存访问等之后从信号处理程序生成调用堆栈的常用技术)
相关文章:
- 当一个新对象被分配到它的地址时,对象是否必须被销毁
- 当我们从/tp地址中添加/减去一个整数时会发生什么
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- ptrA = ptrB 是否等同于 ptrA = &*ptrB?,空值是否共享一个地址空间?
- 指向下一个地址的指针
- 若指针是一个地址,那个么什么是引用
- 表示一个地址需要多少内存
- 访问数组C++的最后一个地址的最安全方法
- 我的c++程序正在打印一个地址而不是一个值
- 是否有任何操作系统允许将内存从一个地址移动到另一个地址而不进行物理复制?
- 如果最后一个地址是0xFFFFFFFF,我如何获取数组结束后的地址
- 如何在c++中调用另一个地址空间中的函数
- 为什么"a->content"给我一个地址而不是一个值?
- 我如何发现什么写到一个地址使用c++
- 比起返回一个指针,返回一个地址能找到任何有用的应用吗?
- 访问存储在指针变量所指向的地址中的值(这是一个地址)返回垃圾值
- CreateFile()返回一个地址为FFFFFF的无效指针
- 当获取一个地址时,模板类型(类/函数)的实例化规则是什么?
- 获取从另一个地址指向的地址
- 成员函数指针-仅一个地址