有个程序在命令行下运行,会有个异常打印。用gflags设置了部分pageheap的选项后无异常打印。想简单的清除pageheap的设置,于是直接删掉了注册表中的HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options里对应可执行程序的项。删完后重新用调试器调试发现不会在异常出断住,看了调试器的异常捕获设置感觉没问题。用gflags下用命令行/p 先启用再禁用pageheap后,调试器下又能捕获异常了。这样看感觉之前删除注册表的操作后,感觉系统还有缓存似的。最终没查出是什么原因,先记录。不知道这个文章里http://book.51cto.com/art/200812/102532.htm的在调试器里查看下页堆设置。
今天用windbg试了!gflag和!heap命令,原来是因为用调试器启动可执行文件,堆会默认打开一些调试检查。而之前的异常问题,就是因为这些堆设置改变后不出现了。