我发现尝试在 gdb 中调试意外未初始化的数据可能很烦人。程序在命令行直接执行时会崩溃,但在 gdb 中检查时不会。看起来 gdb 的堆通常是干净的(全为零),而从命令行来看,显然不是。
是否有一个原因?如果是这样,我可以故意告诉 gdb 或 gcc 弄脏堆吗?IE,有没有办法指定一个“调试”分配器,它总是给malloc()
和随机数据new
?我想这可能涉及一个特殊的 libc?显然,如果有一种方法可以在不更改链接器选项的情况下做到这一点,那就太好了,这样发布版本就尽可能地与调试版本相似。
我目前正在使用 MinGW-w64(基于 gcc 4.7),但我会对一般答案感兴趣。