[心得] Valgrind
寫作業四的時候有用到valgrind,提出來和大家分享一下:
valgrind是一個程式,可用來檢查記憶體是否有錯誤的使用情況,例如指標指到不該指的
地方或memory leak,在某些方面比gdb還要好用。
使用前要先安裝,打apt-get install valgrind或yum install valgrind就可以了。
要執行時,valgrind後面接檔名跟參數,例如:
valgrind ./memTest -f tests/do1
如果有不合法的存取,會顯示invalid read或invalid write以及類似gdb的backtrace,
就可以知道程式在哪些地方用到有問題的指標。
如果要檢查是否有memory leak,需要加一個參數--leak-check=full,例如:
valgrind --leak-check=full ./memTest -f tests/do1
程式結束後會告訴你哪些指標沒有被delete/free,以及那個指標new/malloc的地方。基
本上看definitely lost就好,indirectly lost和possibly lost可以不用理他。
要注意的是,compile的時候g++要加上-g這個參數,否則backtrace可能沒辦法顯示行號
。
拋磚引玉,希望對大家有幫助!
--
白日登山望烽火,黃昏飲馬傍交河。行人刁斗風沙暗,公主琵琶幽怨多。
野雲萬里無城郭,雨雪紛紛連大漠。胡雁哀鳴夜夜飛,胡兒眼淚雙雙落。
聞道玉門猶被遮,應將性命逐輕車。年年戰骨埋荒外,空見蒲桃入漢家。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.248.144
推
11/12 17:25, , 1F
11/12 17:25, 1F
推
11/12 21:22, , 2F
11/12 21:22, 2F
推
11/13 01:59, , 3F
11/13 01:59, 3F
推
11/13 13:04, , 4F
11/13 13:04, 4F
推
11/22 00:32, , 5F
11/22 00:32, 5F