2011-09-26 37 views
8

Tôi đang gỡ lỗi tham nhũng heap GC và đến bước mà tôi muốn thử chạy chương trình trong WinDbg + PageHeap + AppVerifier + GCStress.Làm cách nào để bật GCStress trên Windows 7?

tôi thấy trong bài viết Software crash: faulting module mscorwks.dll, version 1.1.4322.2379 mà tôi có thể kích hoạt GCStress như thế này:..

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 

(tôi đang cố gắng phương pháp này Phải mất chương trình mãi mãi để khởi động tôi đã xóa hai mục cuối cùng từ đăng ký để có nó làm việc, có lẽ cái gì là sai với cách tiếp cận riêng của mình)

Hoặc bài viết Access Violation in .NET 4 Runtime in gc_heap::garbage_collect with no unmanaged modules mô tả các phương pháp khác:.

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

Cách nào là đúng hoặc có cách nào khác chính xác cách?

+0

Tôi không hiểu câu hỏi. Bạn đang hỏi làm thế nào để bật nó lên, sau đó nói rằng bạn thấy bạn có thể kích hoạt nó với phương pháp đầu tiên, nhưng điều đó không hoạt động. Phương pháp thứ hai có hoạt động không? –

+0

@KierenJohnstone, tôi đã không thử phương pháp thứ hai và tôi không chắc chắn liệu một trong hai cách này là chính xác hay không. Đó là tất cả những gì tôi tìm thấy trên web về GCStress và tôi muốn mọi người thông thạo về chủ đề này để được tư vấn. Tôi đã viết rằng phương pháp đầu tiên là chậm vì tôi có thể nghĩ rằng có lẽ nó có thể được thực hiện nhanh hơn bằng cách thiết lập các giá trị khác cho các khóa registry được chỉ định. –

Trả lời

0

I searched GCStress on Koders. Hóa ra cách tốt nhất để hiểu nó là bằng cách xem .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 
}; 
Các vấn đề liên quan