C++堆内存越界问题调试

最近公司代码老是遇到glibc 断言死机,基本都是另外地方把这边内存踩了,另外地方的内存可能已经被覆盖或者释放后重用,这种情况要怎么查才能还原第一现场?死机一般都只有core文件和日志文件。我们用的是arm或x86嵌入式linux系统,内存一般1GB。 盼高手回复,万分感激!!!

补充:嵌入式下用不了valgrind

这种错误一般是你已有的两种数据结合处理。一个是core dump。用gdb等查看分析调用堆栈。找到出错的地方。如果不能直接找到可疑的的地方。就在那个地方添加自己重要的日志。重现问题。然后根据日志进一步分析

第二现场一般都能定位到间接原因,关键是在那里加打印也没法捕获第一现场根本原因的,而且一般这种越界第二现场每次都不同地方的。具有随机性,用保护页内存也不行。