Linux 嵌入式系统中的堆一致性检查

Linux 嵌入式系统中的堆一致性检查,linux,heap,consistency,Linux,Heap,Consistency,我遇到这样的碰撞: #0 0x2c58def0 in raise () from /lib/libpthread.so.0 #1 0x2d9b8958 in abort () from /lib/libc.so.0 #2 0x2d9b7e34 in __malloc_consolidate () from /lib/libc.so.0 #3 0x2d9b6dc8 in malloc () from /lib/libc.so.0 我想这是一个堆腐败问题。uclibc没有mcheck/mp

我遇到这样的碰撞:

#0  0x2c58def0 in raise () from /lib/libpthread.so.0
#1  0x2d9b8958 in abort () from /lib/libc.so.0
#2  0x2d9b7e34 in __malloc_consolidate () from /lib/libc.so.0
#3  0x2d9b6dc8 in malloc () from /lib/libc.so.0
我想这是一个堆腐败问题。uclibc没有mcheck/mprobe。Valgrind似乎不支持MIPS,而我的多线程应用程序依赖于硬件特定的驱动程序。是否有任何检查堆一致性和检测损坏的建议?

我也会看到,这些建议很容易变得更加详细。我并不是说您需要垃圾收集,但您确实需要链接提供的额外日志记录功能

如果是堆损坏,收集器也会被阻塞,并给您提供更有意义的消息。它应该不会太难使用,得到你需要的,然后停止使用,特别是如果你只是让它拦截malloc


它不会像Valgrind那样专注于这个问题,但至少它是一个选项:

您可以编写冒充硬件的存根驱动程序,这样您就可以在功能更全面的环境中构建和测试程序