GDB:使用固定值初始化内存



在我的代码中,我在某处有一个未初始化的指针,似乎被释放了。这个项目很大,我找不到价值。问题是:一旦我附加了调试器,内存似乎初始化为零,导致指针NULLfree不会造成麻烦。有没有办法在将GDB与0xDEADBEEF一起使用时初始化内存?

使用 GDB 时,有没有办法初始化内存

,例如 0xDEADBEEF

当然,如果你知道它的地址:(gdb) call memset($addr, 0xCC, $size)
(gdb) set *(int*)$addr = 0xDEADBEEF

问题通常是您不知道未初始化的指针将在内存中的位置

找到它的一种方法是使用内存清理器。

另一种方法是确定此指针是全局的、在堆栈上还是在堆上,它应该被初始化,并使用 awatch 命令在其上设置访问观察点。

附言你似乎很确信你的问题是"未初始化的自由",但"双重自由"的症状通常是相似的。在做其他任何事情之前,我会尝试使用地址消毒剂。

最新更新