我想问问,如果有人有任何想法如何检测写入分配内存地址。内存块C写入/读取检测
起初我使用mprotect和sigaction一起进行写/读操作时强制出现分段错误。
用在几个这种方法两个负面因素:
- 是很难通过分段故障
- 在mprotect的内存地址传递必须对齐到一个页面边界,即它无法处理这个内存地址用一个简单的malloc。
为了阐明问题:
我构建的应用程序中下集群环境。在某些时候,我分配内存,我在本地主机调用缓冲区并分配一些数据。该缓冲区将被发送到远程节点并具有相同的过程。在同一点上,这个缓冲区将在远程节点中被写入/读取,但是我不知道什么时候(它将被用于DMA写入/读取缓冲区),必须通知本地主机关于缓冲区修改。就像我上面说过的,我已经使用了一些机制,但其中没有一个能够以其能力处理它。现在我只想要一些想法。
每个不同的想法在这里受到欢迎。
谢谢
感谢您的建议。也许我没有表达得很好,但这里的想法并不是调查什么可能是错误的特定内存块,但是是捕获一个内存地址的时候执行读/写操作在这个内存地址和处理它像一个事件。这个所有操作中最重要的事情必须是执行时间。 – Majao
@Majao:我想我确实了解你。应该可以从应用程序本身设置调试寄存器,正如我写的那样,有一些缺点。我认为针对您的问题(检测特定内存访问)的唯一解决方案是硬件设施,并且超出页面级访问限制,X86调试寄存器是您唯一的选择。 – Bart