【調(diào)試】Linux下超強內(nèi)存檢測工具Valgrind

-- 作者 謝恩銘 轉(zhuǎn)載請注明出處

內(nèi)容簡介


  1. Valgrind是什么盐杂?
  2. Valgrind的使用
  3. Valgrind詳細教程

1. Valgrind是什么户辫?


Valgrind是一套Linux下裆站,開放源代碼(GPL
V2)的仿真調(diào)試工具的集合。Valgrind由內(nèi)核(core)以及基于內(nèi)核的其他調(diào)試工具組成巧勤。

內(nèi)核類似于一個框架(framework)小染,它模擬了一個CPU環(huán)境渣玲,并提供服務給其他工具喂窟;而其他工具則類似于插件 (plug-in)庐椒,利用內(nèi)核提供的服務完成各種特定的內(nèi)存調(diào)試任務椒舵。

Valgrind的體系結(jié)構(gòu)如下圖所示:

Valgrind包括如下一些工具:

  • Memcheck:這是valgrind應用最廣泛的工具,一個重量級的內(nèi)存檢查器约谈,能夠發(fā)現(xiàn)開發(fā)中絕大多數(shù)內(nèi)存錯誤使用情況笔宿,比如:使用未初始化的內(nèi)存,使用已經(jīng)釋放了的內(nèi)存棱诱,內(nèi)存訪問越界等泼橘。

  • Callgrind:它主要用來檢查程序中函數(shù)調(diào)用過程中出現(xiàn)的問題。

  • Cachegrind:它主要用來檢查程序中緩存使用出現(xiàn)的問題迈勋。

  • Helgrind:它主要用來檢查多線程程序中出現(xiàn)的競爭問題炬灭。

  • Massif:它主要用來檢查程序中堆棧使用中出現(xiàn)的問題靡菇。

  • Extension:可以利用core提供的功能重归,自己編寫特定的內(nèi)存調(diào)試工具。

2. Valgrind的使用

為了使valgrind發(fā)現(xiàn)的錯誤更精確厦凤,如能夠定位到源代碼行鼻吮,建議在編譯時加上-g參數(shù),編譯優(yōu)化選項請選擇O0较鼓,雖然這會降低程序的執(zhí)行效率椎木。

這里用到的示例程序文件名為:test.c违柏,選用的編譯器為gcc。

生成可執(zhí)行程序

gcc -g -O0 test.c -o test

生成可執(zhí)行程序test之后香椎,如何使用Valgrind來生成內(nèi)存的記錄文件呢漱竖?一般這樣使用:

valgrind --leak-check=full --log-file=test_valgrind.log --num-callers=30 ./test
  • --log-file 后面的test_valgrind.log是指定生成的日志文件名稱。

  • --num-callers 后面的60是生成的每個錯誤記錄的追蹤行數(shù)畜伐。30是隨便設(shè)定的馍惹,如果沒指定,默認是12行貌似(有可能有的追蹤行就沒顯示)烤礁。

  • --leak-check=full 表示開啟詳細的內(nèi)存泄露檢測器讼积。

3. Valgrind詳細教程

詳細教程請看這篇文章:
應用Valgrind發(fā)現(xiàn)Linux程序的內(nèi)存問題


我是謝恩銘,在法國巴黎奮斗的嵌入式軟件工程師脚仔。
目前工作是Android嵌入式和app開發(fā)。
熱愛生活舆绎,喜歡游泳鲤脏,略懂烹飪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吕朵,一起剝皮案震驚了整個濱河市猎醇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌努溃,老刑警劉巖硫嘶,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梧税,居然都是意外死亡沦疾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門第队,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哮塞,“玉大人,你說我怎么就攤上這事凳谦∫涑” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵尸执,是天一觀的道長家凯。 經(jīng)常有香客問我,道長如失,這世上最難降的妖魔是什么绊诲? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮岖常,結(jié)果婚禮上驯镊,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好板惑,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布橄镜。 她就那樣靜靜地躺著,像睡著了一般冯乘。 火紅的嫁衣襯著肌膚如雪洽胶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天裆馒,我揣著相機與錄音姊氓,去河邊找鬼。 笑死喷好,一個胖子當著我的面吹牛翔横,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梗搅,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼禾唁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了无切?” 一聲冷哼從身側(cè)響起荡短,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哆键,沒想到半個月后掘托,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡籍嘹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年闪盔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片噩峦。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡锭沟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出识补,到底是詐尸還是另有隱情族淮,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布凭涂,位于F島的核電站祝辣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏切油。R本人自食惡果不足惜蝙斜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澎胡。 院中可真熱鬧孕荠,春花似錦娩鹉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至个曙,卻和暖如春锈嫩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背垦搬。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工呼寸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猴贰。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓对雪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親米绕。 傳聞我的和親對象是個殘疾皇子慌植,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容