根據哪個標準限制輸出數量? -l選項只是根據行號限制輸出。這是沒用的:假設它只顯示前10個對象,可能您要查找的對象甚至沒有列出。
如果WinDbgs輸出窗口的輸出太長,請使用.logopen將對象轉儲到文件中,然後使用文本編輯器查看該文件。
如果您有其他的想法你的對象的樣子,你可以在所有對象
.foreach (obj { !dumpheap -short -type MyType})
,然後用.if
決定你的對象是否不符合此條件進行循環。
作爲一個例子,我在乾草堆裏尋找一根針。我在堆上搜索超過3000個Hashtables的程序中的特定Hashtable。我嘗試使用的命令是
.foreach (obj { !dumpheap -short -type Hashtable }) {.if (poi(poi(${obj}+1c)) > 100) {!do ${obj}} }
1C
在哈希表的計數部件的偏移量。
100
是Hashtable預計將至少有項目的數量。
不幸的是,它不能立即用於哈希表,因爲!dumpheap -type
也列出了HashtableEnumerators,它以某種方式崩潰了調試器。
要只轉儲哈希表,運行!dumpheap -stat
並找出哈希表的方法表,並與-mt <methodtable>
代替-type <classname>
,這給
.foreach (obj { !dumpheap -short -mt <MT of Hashtable> }) {.if (poi(poi(${obj}+1c)) > 100) {!do ${obj}} }
我知道這是一個老問題上運行的命令,但你設法找出答案? – 2015-09-28 07:22:14