Vista 移走了 doctor wason, 不能用 drwtsn32 -i(XP上有效)安装doctor wason了.
但可以使用 windbg在注册表里修改一项达到自动dump崩溃现场的效果:
ntsd 是 windbg包里的一个文件. 我的经验, 这个windbg包不需要安装, 直接解压即可使用.
注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug
下得手工新添两个:
Auto = "1"
Debugger = D:\WinDbg\ntsd -p %ld -c ".dump /mf D:\WinDbg\prog.dmp;q"
这两个健都是字符串类型, 其中第二个指定调试器
-p %ld 是attach 一个指定的进程(PID)
-c 是自动要执行的命令, .dump 是转储命令. windbg文档中说, 不要从字面上认为mini dump一定比full dump所存的信息要少, 实际上, 有可能mini dump加上一些选项之后, 会得到比full dump更丰富的信息. 这个/mf 是从选项中选出来的两个, 建议使用这个. 后面指定的是dump 文件名, 根据我的经验, 如果系统连续(不一定是紧跟着就发生)2次崩溃, 如果该文件已经存在, 那么这个.dump 并不会覆盖已有的文件. 这一点有时方便有时也不便, 比如我只想让我们的QA机器上dump我们自己的程序, 而现今的电脑上跑着太多的进程, 每一个都可能引起一个崩溃转储. 目前我还没找到办法, 用 %random% 不行. 用prog-%ld 也不行, 似乎在Vista上OS重用一个PID是更经常的事.
无论如何, 上面的注册表修改应该可以让你得到一个转储文件. 可以用CTRL+D在WinDbg里load它了.
阅读(2181) | 评论(0) | 转发(0) |