學會用Clang來進行內存泄露分析

    近期項目出現了內存泄露的問題,對於PC x86平臺來講。一點點的內存泄露每每不會出錯,很是難進行debug調試。這個時候咱們可以用到蘋果給咱們帶來的神器--Clang編譯器來進行內存泄露分析檢測。開關打開以後,生成出來的二進制文件對內存泄露的敏感程度很是高。僅僅要有內存泄露基本就會馬上中止並進行報錯。

    由於項目是用CMake進行組織,所以使用CMake的方法來進行開關的打開,首先要讓CC和CXX都變成Clang和Clang++(注意:在Clang下有時候會對inline函數報錯,需要將inline去掉)。在build文件夾中輸入多線程

CC="clang" CXX="clang++" cmake ../ -Dfsanitize=address -DCMAKE_BUILD_TYPE=Debug

當中的-Dfsanitize=adress就是打開這項內存泄露的檢查開關。而後對項目進行編譯。以後編譯出來的文件你就可以正常執行,執行程序以後。它會去調用你path下Clang目錄bin中的llvm-symbolizer進行符號讀取,一有內存泄露它就會中止報錯。而後傳給終端的信息裏面具體介紹了在內存的申請是在哪一個線程哪一個函數開始的,內存的刪除是在哪一個線程哪一個函數進行的。內存最後的讀取(即野指針的反覆濫用終於致使內存泄露)是在哪一個線程哪一個函數進行的,這對於多線程的開發天然又是如虎添翼。但願你會和我同樣喜歡這款工具。函數

相關文章
相關標籤/搜索