.net 如何在Windows7中打开GCP?
我正在调试一个堆损坏,现在要尝试在WinDbg+PageHeap+AppVerifier+GCStress下运行该程序 我在文章中发现,我可以像这样启用GCPress:.net 如何在Windows7中打开GCP?,.net,windows,debugging,garbage-collection,heap-corruption,.net,Windows,Debugging,Garbage Collection,Heap Corruption,我正在调试一个堆损坏,现在要尝试在WinDbg+PageHeap+AppVerifier+GCStress下运行该程序 我在文章中发现,我可以像这样启用GCPress: 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.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
(我正在尝试这种方法。启动程序要花很长时间。我从注册表中删除了最后两个条目才能使其工作,可能是这种方法本身出了问题。)
或者文章描述了另一种方法:
(DWORD) StressLog = 1
(DWORD) LogFacility = 0xffffffff
(DWORD) StressLogSize = 65536
哪种方法是正确的,或者还有其他正确的方法吗。事实证明,了解这一点的最佳方式是:
我不明白这个问题。您询问如何打开它,然后说您发现可以使用第一种方法启用它,但这不起作用。第二种方法有效吗?@KierenJohnstone,我没有尝试第二种方法,我不确定这两种方法是否正确。这就是我在网上找到的关于GCPress的所有信息,我希望精通这一学科的人能给我提供建议。我写道,第一种方法速度很慢,因为我可能认为,通过为指定的注册表项设置其他值,可能可以加快速度。
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
};