Valgrind的主要作者Julian Seward獲得了2006年的Google-O'Reilly開源大獎(jiǎng)之一——Best Tool Maker
valgrind的主要功能
Valgrind工具包包含多個(gè)工具:
Memcheck:
檢查程序中的內(nèi)存問題,包括使用未初始化的內(nèi)存;使用已經(jīng)釋放的內(nèi)存;使用內(nèi)存越界;對(duì)堆棧的非法訪問;內(nèi)存泄露;malloc/free/new/delete申請(qǐng)和釋放內(nèi)存的匹配等內(nèi)存問題
callgrind:
Callgrind收集程序運(yùn)行時(shí)的一些數(shù)據(jù),函數(shù)調(diào)用關(guān)系等信息,還可以有選擇地進(jìn)行cache 模擬。在運(yùn)行結(jié)束時(shí),它會(huì)把分析數(shù)據(jù)寫入一個(gè)文件。callgrind_annotate可以把這個(gè)文件的內(nèi)容轉(zhuǎn)化成可讀的形式。
cachegrind:
它模擬CPU中的一級(jí)緩存I1,D1和L2二級(jí)緩存,能夠精確地指出程序中 cache的丟失和命中。如果需要,它還能夠?yàn)槲覀兲峁ヽache丟失次數(shù),內(nèi)存引用次數(shù),以及每行代碼,每個(gè)函數(shù),每個(gè)模塊,整個(gè)程序產(chǎn)生的指令數(shù)。這對(duì)優(yōu)化程序有很大的幫助。
helgrind:
它主要用來(lái)檢查多線程程序中出現(xiàn)的競(jìng)爭(zhēng)問題。Helgrind 尋找內(nèi)存中被多個(gè)線程訪問,而又沒有一貫加鎖的區(qū)域,這些區(qū)域往往是線程之間失去同步的地方,而且會(huì)導(dǎo)致難以發(fā)掘的錯(cuò)誤。
massif:
堆棧分析器,它能測(cè)量程序在堆棧中使用了多少內(nèi)存,告訴我們堆塊,堆管理塊和棧的大小。Massif能幫助我們減少內(nèi)存的使用,在帶有虛擬內(nèi)存的現(xiàn)代系統(tǒng)中,它還能夠加速我們程序的運(yùn)行,減少程序停留在交換區(qū)中的幾率。
valgrind的安裝
1、 到www.valgrind.org下載最新版valgrind-3.2.3.tar.bz2
2、 解壓安裝包:tar –jxvf valgrind-3.2.3.tar.bz2
3、 解壓后生成目錄valgrind-3.2.3
4、 cd valgrind-3.2.3
5、 ./configure
6、 make;make install
valgrind的使用
用法: valgrind --tool=tool_name [options] program_name:
例如:valgrind --tool=memcheck --leak-check=full ./test
常用選項(xiàng),適用于所有Valgrind工具
-tool= 最常用的選項(xiàng)。運(yùn)行 valgrind中名為toolname的工具。默認(rèn)memcheck。
--h 顯示幫助信息。
--version 顯示valgrind內(nèi)核的版本,每個(gè)工具都有各自的版本。
-–quiet 安靜地運(yùn)行,只打印錯(cuò)誤信息。
-–verbose 更詳細(xì)的信息, 增加錯(cuò)誤數(shù)統(tǒng)計(jì)。
--trace-children=no|yes 跟蹤子線程? [no]
--track-fds=no|yes 跟蹤打開的文件描述?[no]
--time-stamp=no|yes 增加時(shí)間戳到LOG信息? [no]
--log-fd= 輸出LOG到描述符文件 [2=stderr]
--log-file= 將輸出的信息寫入到filename.PID的文件里,PID是運(yùn)行程序的進(jìn)行ID
--log-file-exactly=輸出LOG信息到 file
--log-file-qualifier= 取得環(huán)境變量的值來(lái)做為輸出信息的文件名。 [none]
--log-socket=ipaddr:port 輸出LOG到socket ,ipaddr:port
LOG信息輸出
--xml=yes 將信息以xml格式輸出,只有memcheck可用
--num-callers= number 顯示多少個(gè)函數(shù)棧 [12]
--error-limit=no|yes 如果太多錯(cuò)誤,則停止顯示新錯(cuò)誤? [yes]
--error-exitcode= 如果發(fā)現(xiàn)錯(cuò)誤則返回錯(cuò)誤代碼 [0=disable]
--db-attach=no|yes 當(dāng)出現(xiàn)錯(cuò)誤,valgrind會(huì)自動(dòng)啟動(dòng)調(diào)試器gdb。[no]
--db-command= 啟動(dòng)調(diào)試器的命令行選項(xiàng)[gdb -nw %f %p]
適用于Memcheck工具的相關(guān)選項(xiàng):
--leak-check=no|yes| 要求對(duì)leak給出詳細(xì)信息? [yes]
valgrind使用總結(jié)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 一. 簡(jiǎn)述valgrind是什么,為何能進(jìn)行內(nèi)存泄露 valgrind是一個(gè)程序調(diào)試及性能分析的工具集,涵蓋mem...
- Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
- Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
- 在編寫 PHP 應(yīng)用時(shí)經(jīng)常需要處理日期和時(shí)間,使用Carbon 會(huì)很方便– 繼承自 PHPDateTime 類的 ...
- 7:30:小米粥一碗,雞蛋2個(gè),愛恩摩爾1支,核桃不變 10:00:蘋果半個(gè),雞胸50g,核桃不變 12:30:土...