आप किस मानदंड को आउटपुट की संख्या सीमित करना चाहते हैं? -l विकल्प लाइन संख्याओं के अनुसार आउटपुट को सीमित करता है। यह बेकार है: मान लीजिए कि यह केवल पहली 10 ऑब्जेक्ट्स दिखाता है, हो सकता है कि आप जिस वस्तु को खोज रहे हैं वह भी सूचीबद्ध नहीं है।
यदि आउटपुट WinDbgs आउटपुट विंडो के लिए बहुत लंबा है, तो ऑब्जेक्ट को फ़ाइल में डंप करने के लिए .logopen का उपयोग करें और फिर टेक्स्ट एडिटर के साथ फ़ाइल की समीक्षा करें।
आप अन्य विचारों कैसे अपने वस्तु की तरह लग रहा है, तो आप सभी वस्तुओं
.foreach (obj { !dumpheap -short -type MyType})
और फिर या नहीं, अपने वस्तु इस मापदंड से मेल खाने .if
साथ तय पर एक पाश प्रदर्शन कर सकते हैं।
उदाहरण के तौर पर, मैं एक घास के मैदान में एक सुई की तलाश में था। मैं एक कार्यक्रम में एक विशिष्ट हैशटेबल खोज रहा था जिसमें ढेर पर 3000 से अधिक हैशटेबल्स थे। आदेश मैं उपयोग करने का प्रयास
.foreach (obj { !dumpheap -short -type Hashtable }) {.if (poi(poi(${obj}+1c)) > 100) {!do ${obj}} }
1C
hashtable की गिनती के सदस्य की ऑफसेट है था।
100
हैशटेबल कम से कम होने की अपेक्षा की जाने वाली वस्तुओं की संख्या है।
दुर्भाग्य से यह तुरंत हैशटेबल्स के लिए काम नहीं करता है, क्योंकि !dumpheap -type
ने हैशटेबलएनेमेटर्स को भी सूचीबद्ध किया है जो किसी भी तरह डीबगर को दुर्घटनाग्रस्त कर देता है।
hashtables केवल डंप करने के लिए, !dumpheap -stat
चलाने के लिए और hashtables की विधि तालिका यह पता लगाने और -type <classname>
के बजाय -mt <methodtable>
, जो
.foreach (obj { !dumpheap -short -mt <MT of Hashtable> }) {.if (poi(poi(${obj}+1c)) > 100) {!do ${obj}} }
स्रोत
2010-10-19 21:14:36
मैं जानता हूँ कि यह एक पुराने सवाल यह है कि देता है के साथ आदेश चला है, लेकिन आप के लिए प्रबंधन कैसे किया एक जवाब पता है? –