大佬教程收集整理的这篇文章主要介绍了c程序的内存访问监视器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
void set_value(int* buffer,size_t pos,int value) { buffer[pos] = value; } int main(void) { int* buffer = malloc(BUFF_SIZE * sizeof(int)); set_value(buffer,2,10); set_value(buffer,3,12); free(buffer); return 0; }
我已经尝试使用多个内存工具,如ptrace,strace,ASan,Dmalloc,但我没有实现结果.
另一个想法是使用mprotect修改内存的保护,并写入页面错误的处理程序.我使内存为只读,而当写入发生时,处理程序会修改页面保护,并让该功能将内容写入内存,但之后我无法再次读取该页面,以供进一步访问.
有没有关于如何监视对堆内存的每次写入的任何提示?
由于在特定情况下,仪器仪表可能会耗费大量成本,因此您可以对每个指令进行设置,并且可以负担得起采样内存引用,建议您从最近的英特尔处理器(AMD处理器中有类似的命名为IBS)探索PEBS基础设施[3].可以从Linux OS [4]中可用的perf工具使用PEBS(我不知道是否在其他OSeS上可用)
[1] PIN https://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool
[2] DynInst http://www.dyninst.org
[3] Intel手册第18.4.4节基于精确事件的采样(PEBS)http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.pdf
[4] Linux perf取样内存地址https://lwn.net/Articles/531766/
以上是大佬教程为你收集整理的c程序的内存访问监视器全部内容,希望文章能够帮你解决c程序的内存访问监视器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。