调试堆/ STL调试等效于GCC?

rpg*_*rpg 5 c++ debugging gcc

我计划更多地使用GCC(Linux和Windows),我想知道是否有相当于MSVC 调试堆STL检查可用于GCC CRT和STL.

我已经了解Valgrind等工具,但我正在寻找库中内置的东西.

Pet*_*acs 7

我不太熟悉调试堆和STL检查,但是当我在Linux上的GCC中遇到内存问题时,我使用一个名为MALLOC_CHECK_的环境变量(来自malloc(3)):

最新版本的Linux libc(晚于5.4.23)和GNU libc(2.x)包含一个可通过环境变量调整的malloc实现.当设置MALLOC_CHECK_时,使用一个特殊的(效率较低的)实现,它被设计为容忍简单错误,例如使用相同参数的free()的双重调用,或者单个字节的溢出(off-by-one bug) ).但是,并非所有此类错误都可以得到保护,并且可能导致内存泄漏.如果MALLOC_CHECK_设置为0,则会自动忽略任何检测到的堆损坏; 如果设置为1,则在stderr上打印诊断; 如果设置为2,则立即调用abort().这可能很有用,因为否则崩溃可能会在很晚之后发生,因此很难找到导致问题的真正原因.

还有电围栏,一旦发生超限/欠载,它可以帮助捕获缓冲区溢出中止.有关更多信息,请参阅libefence(3).