Обновлено:
теперь с valgrind --tools=memcheck --track-origins=yes --leak-check=full ./prog
он работает правильно, но без этого valgrind
все равно идет не так, как это происходит?
Я делаю проект для Linux, который хранит много данных в памяти, и мне нужно знать, какой блок данных изменен, чтобы найти проблему в моей программе.
Обновлено: это многопоточная программа, и запись / чтение выполняется различными потоками, которые создаются системными вызовами.
код такой
for(j=0;j<save_size;j++){
e->blkmap_mem[blk_offset+save_offset + j] = get_mfs_hash_block();
memcpy(e->blkmap_mem[blk_offset + save_offset +j]->data, (char *)buff + j * 4096, 4096);
e->blkmap_mem[save_offset+j]->data = (char *)(buff + j* 4096);
e->blkmap_mem[blk_offset+save_offset + j]->size = 4096;
e->blkmap_addr[blk_offset+save_offset + j] = 1;
И я хочу знать, если e->blkmap_mem[blk_offset+save_offset+j]->data
изменено где-то еще.
Я знаю, awatch exp
в gdb
может проверить, изменяется ли значение, но здесь их слишком много, есть ли способ отследить их все, я имею в виду, что их может быть около 6000.
Спасибо, ребята.