2010-05-20 42 views
1

我得到一個崩潰這樣的:堆一致性檢查嵌入式系統

#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,我的應用程序(它是多線程的)取決於hw特定的驅動程序。任何建議來檢查堆的一致性和檢測腐敗?

回答

0

我會use a replacement malloc()(也見this answer),可以很容易地做出更詳細。我並不是說你需要垃圾回收,但你似乎需要鏈接提供的其他日誌記錄工具。

如果這是堆腐敗,收集器也會窒息它,並給你更有意義的消息。它不應該太難使用,得到你需要的東西,然後停止使用(特別是如果你讓它攔截malloc())。

它不打算在零上像Valgrind的做的問題,但至少它的一個選項:)

0

你可以寫假裝是硬件,它應該讓你構建和測試程序存根驅動程序在一個更全面的功能環境中。