全局标志(gflags)的注册表键

8

我试图使用调试工具GFlags来移除“Enable heap tagging by DLL”标志,但出现了错误:“无法保存注册表错误 5”。该应用程序正在调试中。

其他“Enable heap...”标志没有问题,可以切换开关。我尝试以管理员身份启动实用程序,但这并没有改变任何东西。

因此,我正在尝试弄清楚应该手动更改哪些注册表设置才能使一切恢复正常,但似乎找不到有关Windows全局标志的正确注册表键。

或者我可以简单地删除与我的应用程序相关的任何全局标志。

有什么想法吗?

我试图在注册表中查找FLG_HEAP_PAGE_ALLOCS,这是更通用的标志“Enable page heap”的符号名称,如MSDN中所述,但没有成功。

1个回答

13

删除以下键:

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RADAR\HeapLeakDetection\DiagnosedApplications\MyApplication.exe]
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\MyApplication.exe]

请注意,这也会删除使用/为Application Verifier制作的调试配置。

其次,也许与此相关,但在有关gflags的MSDN页面上

"注意:不正确地使用此工具可能会降低系统性能或导致Windows无法启动,需要重新安装Windows。

重要提示:在Windows Server 2003及更高版本(包括Windows Vista)上,池标记永久启用。在这些系统上,全局标志对话框中的启用池标记复选框是灰色的,并且启用或禁用池标记的命令将失败。"


1
那真是救了我的一命 - 标志位导致了崩溃 - 移除关键条目,崩溃问题解决了。 - imekon
请注意,这并不意味着源头原因、漏洞的根源已经消失!Gflags揭示了那些偶尔、随机发生的漏洞:那些无法在受控环境中重复的漏洞。对我而言,它是一种帮助跟踪C/C++代码中未定义行为的工具,这些漏洞确实会在实际生产环境中发生,但并不总是(或很少)在测试环境中发生。这就是我使用gflags的方式。 - Stephane Rolland
1
我建议您打开在崩溃时生成的崩溃转储文件,以便检查导致故障的代码是什么。闭上眼睛从来没有修复错误 :-),除非您想隐藏存在缺陷,但我认为这不是正确的反应方式。 - Stephane Rolland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接