小编Flo*_*ram的帖子

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;
}
Run Code Online (Sandbox Code Playgroud)

我主要感兴趣的是访问内存的函数和已修改内容的地址.

我曾尝试使用多个内存工具,如ptrace,strace,ASan,Dmalloc,但我没有达到结果.

另一个想法是使用mprotect修改内存更改内存保护并为页面错误编写处理程序.我将内存设置为只读,当发生写入时,处理程序修改页面保护并让函数将内容写入内存,但之后我无法再次读取页面,以便进一步访问.

你有关于如何监控每次写入堆内存的提示吗?

c memory heap-memory

10
推荐指数
1
解决办法
1451
查看次数

标签 统计

c ×1

heap-memory ×1

memory ×1