標籤:

C++ 有哪些性能分析工具?

大家好,請問C/C++有沒有和java類似的JProfiler。 對C/C++能夠查看當前應用的對象、對象引用、內存、CPU使用情況、線程、線程運行情況(阻塞、等待等),同時可以查找應用內存使用得熱點,即:哪個對象佔用的內存比較多;或者CPU熱點,即:哪兒方法佔用的較大得CPU資源。

如果沒有一般C++用什麼軟體來查找內存泄露?可否推薦一下?謝謝


如果是windows下開發的話,如果你用的是VC的話,VisualStudio2010及以後的版本中自帶profile工具,十分好用。


Linux下可以用valgrind。

Valgrind包含下列工具:

1、memcheck:檢查程序中的內存問題,如泄漏、越界、非法指針等。

2、callgrind:檢測程序代碼的運行時間和調用過程,以及分析程序性能。

3、cachegrind:分析CPU的cache命中率、丟失率,用於進行代碼優化。

4、helgrind:用於檢查多線程程序的競態條件。

5、massif:堆棧分析器,指示程序中使用了多少堆內存等信息。

6、lackey:

7、nulgrind:

更加詳細的,可以看自己百度或者在CSDN上看相關的技術博客。

例如:

http://blog.csdn.net/sunmenggmail/article/details/10543483


這些東西VisualStudio都自帶了

沒錯,我又看了一遍,都自帶了


Valgrind Home 比較好用. 要查內存泄漏的話靜態檢查和 profile 工具一起上吧


Perf .


Windows平台用Application Verifier可以查幾乎所有的內存問題(包括內存泄露、越界等,內核對象泄露也能查出來)。


C++沒有GC,對象引用之類的是沒法跟蹤的,除非自己寫。

profiling工具vs和gcc都有,gcc下的叫 gprof ,功能都是通過檢測堆棧採樣每個函數的cpu時間,統計代碼熱點,方便程序員有針對性的優化代碼。

線程運行情況在vs裡面是比較好看的,命中斷點或者暫停程序就可以看到所有線程的運行狀態,threads 窗口可以看到各個進程堆棧。gdb也有類似功能,命令行操作。

內存泄漏有些代碼分析工具可以在編譯期檢測一部分出來,但是大部分內存泄漏還是得靠內存管理庫檢查。代碼分析工具的有cppcheck之類的,搜一搜有很多。庫的話一般都是自己造輪子吧。其實c++更多的是從編程風格上避免內存泄漏,諸如編寫異常安全的代碼或者完全就禁用異常、RAII、各種智能指針等等,就是干這個用的。


intel vtune也很好用


g++的gprof好像是叫這個名字吧!這個工具有你在具體百度


Windows下, 11 個 Visual Studio 代碼性能分析工具,之前一直用AMD CodeAnalyst。

內存泄漏用Visual Leak Detector。


同求,我也急需一個類似於jprofiler一樣的gui可視化的監控工具!

樓主有找到這樣類似的工具請私我下哈~


推薦閱讀:

C++11引入了哪些讓人難忘的坑?
由於未能創建 Microsoft Visual C# 2015 編譯器......問題?
C++程序怎麼在鏈接期間確保一塊內存空間?
怎麼看待做手游cocos前端開發,lua用的多,c++用的少面試會被鄙視?
若要向C++之父 Bjarne Stroustrup 請教10個技術Topics,有什麼好的建議么?

TAG:C |