leakdiag是微軟一款檢測memory leak的工具
安裝預設是在c:\leakdiag下,完成後介面如下:
寫如下的測試程式進行測試
#include
"stdafx.h"
#include
int_tmain(int
argc, _tchar* argv)
return 0;
}執行程式後(程式必須在除錯狀態下啟動,否則報錯),啟動leakdiag(必須在程式啟動後啟動
leakdiag
,leakdiag
不會實時重新整理,否則會找不到相應程式),找到對應的程式:
然後選擇windows heap allocator來跟蹤heap的使用,按start開始,等一會按log,然後再stop9 r! e* m: p g# w3 v3 ~7 |
會在c:\leakdiag\logs下面生成乙個log
開啟log,關鍵部分如下:
可以看到num = 6 的那行標註了記憶體洩露的源頭,在mem_test.cpp 中的第12行(生成檔案前,需要設定程式相應
pdb位置,
注意:pdb
路徑不能包含中文字元
另外還有個log分析工具ldparser,正在學習中
儲存器分段和位址的形成
從8086開始採用分段的方法管理儲存器。只有充分理解儲存器分段的概念和儲存器邏輯位址和實體地址的關係,才能熟練地使用8086 8088組合語言。儲存單元的位址是無符號數,n 位二進位制數總共能夠表示 2n 個儲存單元的位址。為了書寫方便,儲存單元位址常採用十六進製制數表示。當以字方式訪問字時,處理器...
Linux上Core Dump檔案的形成和分析
core,又稱之為 core dump檔案 是unix linux 作業系統的一種機制,對於線上服務而言,core令人聞之色變,因為出core的過程意味著服務暫時不能正常響應,需要恢復,並且隨著吐core程序的記憶體空間越大,此過程可能持續很長一段時間 例如當程序占用60g 以上記憶體時,完整cor...
Linux上Core Dump檔案的形成和分析
core,又稱之為core dump檔案,是unix linux作業系統的一種機制,對於線上服務而言,core令人聞之色變,因為出core的過程意味著服務暫時不能正常響應,需要恢復,並且隨著吐core程序的記憶體空間越大,此過程可能持續很長一段時間 例如當程序占用60g 以上記憶體時,完整core檔...