2011-09-26 11 views
8

मैं GC ढेर भ्रष्टाचार को डिबग कर रहा हूं और उस चरण में आया जहां मैं WinDbg + PageHeap + AppVerifier + GCStress के तहत प्रोग्राम चलाने का प्रयास करना चाहता हूं।विंडोज 7 में जीसीस्ट्रेस कैसे चालू करें?

मैं लेख Software crash: faulting module mscorwks.dll, version 1.1.4322.2379 कि मैं इस तरह GCStress सक्षम कर सकते हैं में पाया:।।

reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v HeapVerify /t REG_DWORD /d 1 
reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v StressLog /t REG_DWORD /d 1 
reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v GCStress /t REG_DWORD /d 3 
reg.exe add "HKLM\SOFTWARE\Microsoft\.NETFramework" /f /v FastGcStress /t REG_DWORD /d 2 

(मैं इस विधि कोशिश कर रहा हूँ यह शुरू करने के लिए हमेशा के लिए कार्यक्रम लेता है मैं से पिछले दो प्रविष्टियों को नष्ट कर दिया रजिस्ट्री शायद कुछ दृष्टिकोण के साथ ही गलत है, यह काम करने के लिए)

या लेख Access Violation in .NET 4 Runtime in gc_heap::garbage_collect with no unmanaged modules वर्णित अन्य विधि:।

(DWORD) StressLog = 1 
(DWORD) LogFacility = 0xffffffff 
(DWORD) StressLogSize = 65536 

किस तरह से सही है या कोई अन्य सही तरीका है?

+0

मुझे प्रश्न समझ में नहीं आ रहा है। आप पूछ रहे हैं कि इसे कैसे चालू करें, फिर कहें कि आपने पाया है कि आप इसे पहली विधि के साथ सक्षम कर सकते हैं, लेकिन यह काम नहीं करता है। क्या दूसरी विधि काम करती है? –

+0

@ कियरन जॉनस्टोन, मैंने दूसरी विधि का प्रयास नहीं किया और मुझे यकीन नहीं है कि इनमें से कोई भी सही है या नहीं। जीसीस्ट्रेस के बारे में वेब पर मैंने जो कुछ पाया है और मैं लोगों को इस विषय में सलाह देने के लिए कुशल बनाना चाहता हूं। मैंने लिखा है कि पहली विधि धीमी है क्योंकि मुझे लगता है कि शायद निर्दिष्ट रजिस्ट्री कुंजियों के लिए अन्य मानों को सेट करके इसे तेज़ी से बनाया जा सकता है। –

उत्तर

0

I searched GCStress on Koders। यह समझने का सबसे अच्छा तरीका है कि .NET's source code:

enum GCStressFlags { 
    GCSTRESS_NONE    = 0, 
    GCSTRESS_ALLOC    = 1, // GC on all allocations and 'easy' places 
    GCSTRESS_TRANSITION   = 2, // GC on transitions to preemtive GC 
    GCSTRESS_INSTR_JIT   = 4, // GC on every allowable JITed instruction 
    GCSTRESS_INSTR_NGEN   = 8, // GC on every allowable NGEN instruction 
    GCSTRESS_UNIQUE    = 16, // GC only on a unique stack trace 
};