C 語言 malloc 配置產生的問題

c/c++ 語言的記憶體使用由 programer 自己負責,c/c++ 本身又沒有幫你檢查所配置的記憶體,使用的時候是否產生 over-runs 或是 under-runs 的情形。有時候程式在執行時,雖然存取到未配置的記憶體,但是一時間還不會讓整個程式發生錯誤,這種 bug 最難處理了… 程式執行的時候不一定會在什麼時候出錯….. -__-|

最近在 debug 一個程式就是這樣,一直找不到是程式哪裡出現錯誤,而在執行程式的時候,有時候可以正常的執行完,但是大部分的時候,會莫名其妙的出現 segmentation fault 然後結束程式….

網路上找到一些可以幫忙 debug memory allocation 產生問題的工具。像是 Electric Fence 和 valgrind。

使用 Electric Fence 的時候,只要把程式連結到 libefence.a ,再使用 gdb 執行程式就可以了.。看 man efence 會有更多的說明。

另外,在執行程式的時候,也可以使用下列的方式執行:
$MALLOC_CHECK_=1 ./a.out

這樣可以打開 glibc 中的 debug 機制,幫你找出可能發生的問題。

相關網站和網址:
1.在Linux環境下的記憶體臭蟲該如何解決,英文原文在此-Debugging Memory on Linux
2.Valgrind HOWTO
3.Using purify, PurifyPlus and valgrind

Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: