Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2314054
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2009-07-15 18:42:46

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它了.
阅读(2151) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~