2010-09-03 40 views
4

我用python2.5與scipy.weave嵌入c代碼。如何調試「glibc檢測*** python:malloc():內存損壞」

在我的C代碼,不存在的malloc()函數,但我收到錯誤,如

"glibc detected *** python: malloc(): memory corruption" 

不時。(這是一個隨機算法)

所以我應如何調試它出來嗎?

感謝

+0

相關:http://stackoverflow.com/questions/2663841/python-tracing-a-segmentation-fault – Mark 2010-09-03 13:58:14

回答

7

我大膽猜測,你的代碼某處溢出數組(或造成的Python這樣做)。

如果你不能可靠地重現它,你會發現調試很難,所以你可能想要明確地給你的隨機數生成器加上種子,並嘗試找到一個可以重現該腐敗的種子。您可能還會發現,使用諸如valgrind這樣的工具可以幫助您跟蹤何時寫入分配的限制 - 當您每次都可以複製它時可能更加如此。

+1

+1 for valgrind – bstpierre 2010-09-03 19:04:33