设为首页 收藏本站
查看: 609|回复: 0

[经验分享] Windows高级排错实战

[复制链接]

尚未签到

发表于 2018-6-9 13:39:48 | 显示全部楼层 |阅读模式
  一、序
  
为什么需要学习排错
  诚然,App-V很可能是应用程序部署和使用的趋势,在某种程度上正帮助我们减少应用程序出错的机会,从而减少测试和排错的精力。然而,任何大小的变化都会多多少少地遭受反对和引起疑虑,App-V这些新事物的引入,带来着基础架构的新变化,并需要改变IT和用户部署使用应用程序的观念,这种建议的提出并执行有时不是一件简单的事情,尤其是比较大型的公司, 关于安全你要说服IT Security Team,关于基础架构改变你要和技术主管展示使用的好处,关于支持你要培训IT部门不然出了问题不能总靠你自己去support,关于用户你要改变用户使用观念,关于购买你要说服老板,关于……还有很多关于……
  
对于应用程序的出错,我们有两个可以同时考虑的互不冲突的方向,一个方向是减少出错的机会,使用应用程序虚拟化例如App-V,一是提高出错时排错的能力。这篇文章介绍的是后者。
  
在目前的基础架构上,我们很多时候面对着蓝屏和传统应用程序报错带来的挑战。关于蓝屏分析,因为网络中的同类文章已经比较多了,这里不再赘述,但会在文章最后分享大拿Eric的精品文章链接给大家参考。这里我们说说应用程序报错的排错。

  二、实战
  1.  一些时候,我们会遇到应用程序的报错,但从报错的窗口我们无法知道是什么引起的报错。这是一个上周遇到的case, Outlook联网后就出现报错。
  
DSC0000.gif   

  2.  我们可以让微软的 User Mode Process Dumper 出手
  除了Windows 蓝屏故障以外,很多应用程序进程异常关闭或停止响应的软件故障也可以通过分析转储文件加以排查。

Windows 没有直接提供为应用程序保存转储文件的功能,但我们可以在微软官方网站下载 User Mode Process Dumper
  
http://www.microsoft.com/downloads/details.aspx?FamilyID=E089CA41-6A87-40C8-BF69-28AC08570B7E
  3. 为异常关闭的进程创建 .Dmp 文件
  1) 从 Program Files\Debuggers\Userdump 文件夹运行 Userdump 工具中包括的 Setup.exe 程序。此程序会安装内核模式驱动程序(Userdump.sys 文件),还会在“控制面板”中创建 Process Dump(进程转储)图标。
  2) 在“控制面板”中,双击 Process Dump(进程转储),然后在 Exception Monitoring(异常监视)选项卡上单击“新建”,以向“监视器”列表添加适当的程序名称(例如,Mtx.exe 或 Dllhost.exe),然后单击“确定”。
  3) 在“监视器”框中,单击程序名称,然后单击“规则”。现在,您可以选择为该程序启动 Userdump.exe 的错误类型,例如“访问冲突 (c0000005)”。当 Mtx.exe 或 Dllhost.exe 生成访问冲突时,Userdump.exe 会首先启动,然后在 %SystemRoot% 文件夹中创建转储文件 (.dmp)。通过分析此.dmp 文件,您或许能够隔离Winlogon 访问冲突错误的原因。
  http://support.microsoft.com/kb/241215/zh-cn
  
在这里,我们新建Outlook.exe
DSC0001.gif

  
4. 当你再模拟出错的时候,Dump文件会生成并放置于你设定的文件夹中。
DSC0002.gif

  5. 在WinDbg 调试程序中能够打开并分析这样创建的用户转储,以便确定故障的原因.
  启动WinDbg,在 File 菜单中,单击 Open Crash Dump,并选择此故障转储文件。
  WinDbg download: http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx
  
我键入常用的分析命令  !analyze -v
DSC0003.gif

  6. 这个例子并不是一个很明显找出root cause的例子,运气好的好可能一下就找分析出来了,可惜比较多Symbol没有找到,继续分析下去有些困难,但是并不妨碍我们使用搜索工具寻找Tips先去测试下.
  
DSC0004.gif

  7. 建议用户将Out of Office里面的设置进行更改,报错不见了。原来就是这个问题,问题解决了。

8.  我们也可以为挂起进程创建 .Dmp 文件
  1) 从 Program Files\Debuggers\Userdump 文件夹运行 Userdump 工具中包括的 Setup.exe 程序。
  2) 当该程序挂起时,请在命令提示符处键入 userdump PID 命令,其中 PID 是挂起程序的进程 ID。要获取程序的 PID,请打开任务管理器,然后单击“进程”选项卡。
  3) 运行 userdump PID 命令时,会生成 .dmp 文件,使用该文件可以通过程序(例如 WinDBG)执行总结调试。
  三、Tips

使用WinDbg运气好的话,我们第一次就可以看到问题所在

例如这个是和声音有关的蓝屏问题

DSC0005.gif

但是有时运气不好的话,内存池被破坏,我们需要二次分析

内存池破坏错误通常发生于一个驱动程序遭受了缓冲区溢出,大多为下溢,也有可能是上溢。内存池破坏引起的崩溃原则上是不可调试的,因为系统崩溃发生于破坏的数据被引用之时,而不是数据被破坏之时。
  
1、运行“verifier.exe”,您会看见“驱动程序验证程序管理器”向导;
2、选择第二项——“创建自定义设置(供程序开发人员使用)”,然后点击“下一步”;
3、选择第二项——“从一个完整的列表选择单个设置”,并点击“下一步”;
4、仅选中第一项——“特殊池”前面的复选框,进入下一步;
5、选择第三项——“自动选择这台计算机上安装的所有驱动程序”,点击“完成”;
6、重新启动系统;
7、尝试再次引发同样的崩溃;
8、再次分析内存转储文件。
  
原理解释:通过这些步骤将启用特殊内存池,被检验的所有驱动程序对于略小于一个页面大小的缓冲区申请都将使用特殊内存池,不而是使用一般情形下的换页或非换页内存池。从特殊内存池中分配的缓冲区被夹在两个无效页面之间。因此,对于小于一个页面大小的缓冲区的溢出,系统在溢出发生时就会检测到,因为它导致了在缓冲区之后的无效页面发生了页面错误,也就是pagefault。那么,再次崩溃时,将不可调试的转为可调试的了,而且运气好的话能够看见Windbg直接指出引起崩溃的驱动。
  四、参考文献
  关于WinDbg的使用,文章比较多,可以参考下大拿Eric的文章

手握利器,直面“蓝脸”!
http://bbs.winos.cn/thread-55125-1-1.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-521379-1-1.html 上篇帖子: Windows Server 2012 R2 WSUS4.0 服务器安装与配置目录说明 下篇帖子: SQL Server 2012 快速安装手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表