Windows错误报告

Windows错误报告(WER)(代号为Watson)是MicrosoftWindows XP中引入的崩溃报告技术[1],此技术在之后的WindowsWindows Mobile5.0和6.0中均被包含使用。虽然代号为Watson,但请不要与Dr. Watson调试工具相混淆,该工具会将记忆体内容转储至使用者的本地计算机设备上,Windows错误报告会收集并提供使用网络向Microsoft发送发生错误之后的调试讯息(记忆体内容转储)或停止响应的使用者桌面。未经使用者许可,不会发送任何数据。[2]当转储讯息(或者其他错误签名讯息)发送至Microsoft服务器时,Microsoft服务器将对讯息进行分析处理,并在有可行解决方案时将方案返送会使用者。使用Windows错误报告来响应提供解决方案。Windows错误报告作为一个Windows服务而运行,使用者可以选择完全禁用。如果Windows错误报告本身崩溃,则操作系统会无法发送原始崩溃进程产生的错误报告。

历史

Windows XP

Microsoft首次在Windows XP中引入了Windows错误报告。[1]

Windows Vista

Windows Vista中的 Windows错误报告得到了显著改善。最重要的是,在此功能上创建了一组新的公共API,用于报告除应用程序崩溃和挂起之外的其他故障。[3]开发人员可以创建自定义报告并自定义报告用户界面。在MSDN中也记录了这些新的API。Windows错误报告的体系结构在改进之后,变得重点关注可靠性和使用者体验。而且WER在即使进程处于非常糟糕的状态下也可以报告相关错误了。例如在进程遇到堆栈耗尽,PEB / TEB损坏的情况下。堆损坏在Windows Vista之前的早期操作系统中,该过程通常以静默方式终止,而不会在这些条件下生成错误报告。除此以外,在修改中还引入了一个新的控制面板小程序“问题报告和解决方案”,用于记录系统和应用程序错误和问题,并提出可能的问题解决方案。

Windows 7

问题报告和解决方案控制面板小程序已替换为Windows 7Server 2008 R2上Windows 操作中心的“维护”部分。

新的应用程序问题步骤记录器(PSR.exe)可用于Windows 7的所有版本,并且可以在遇到崩溃时收集用户执行的操作,以便测试人员和开发人员可以重现该情况以进行分析和调试。[4]

系统设计

WER是一个分布式系统。客户端软件检测错误情况,生成错误报告,标记存储堆,并将错误报告给WER服务。WER服务记录错误发生,然后,根据已知的特定错误信息,可能会从客户端请求其他数据,或将客户端指向解决方案。程序员可以访问WER服务以检索特定错误报告和基于统计的调试的数据。

WER客户收集的错误将发送到WER服务。WER服务使用大约60台服务器连接到65TB存储局域网络,该网络存储错误报告数据库和120TB存储局域网络,可存储长达6个月的原始CAB文件。该服务被配置为每天接收和处理超过一亿个错误报告,这足以使诸如因特网蠕虫之类的相关全局事件存活下来。[5]

Buckets

在Microsoft Windows错误报告(WER)系统中,根据“存储桶”组织崩溃报告。Buckets会按以下方式对问题进行分类:[6]

  • 应用名称
  • 应用版本
  • 申请建设日期
  • 模块名称
  • 模块版本
  • 模块构建日期
  • 操作系统异常代码[7] [8]/系统错误代码[9][10]
  • 和模块代码偏移

理想情况下,每个存储桶都包含由同一个错误引起的崩溃报告。然而,在WER划分中存在两种形式的弱点:冷凝启发式的弱点,这导致将报告从错误映射到太多桶中。例如,如果您再次编译应用程序而没有任何更改,则模块构建日期将发生更改,同样的崩溃将被置于另一个存储桶中。扩展启发式方法的弱点,导致将多个错误映射到同一个存储桶中。例如,如果两个不同的错误在strlen函数内崩溃,由于它们均使用了损坏的字符串叫用,所以两者只会有一个存储桶。发生这种情况是因为在Windows OS客户端上生成存储桶而不对内存转储执行任何符号分析。Windows错误报告客户端选择的模块是堆栈顶部的模块。对许多报告的调查导致故障模块与原始桶确定存在了不同。[11]

第三方软件

软件和硬件制造商可以使用Microsoft的Windows开发人员中心硬件和桌面仪表板(之前被称为Winqual)程式访问其错误报告。[12]为了确保错误报告数据仅发送给负责产品的工程师,Microsoft要求感兴趣的供应商获得VeriSign Class 3 Digital ID或DigiCert证书。[13]由更便宜的提供商颁发的数字证书(如ThawteComodoGlobalSignGeoTrustCybertrustEntrustGoDaddyQuoVadisTrustwaveSecureTrustWells Fargo)不被接受。[14][15][16][17][18]

软件和硬件制造商还可以通过将错误签名链接到Windows错误报告响应来关闭与客户的循环。这允许分发解决方案以及从客户收集额外信息(例如重现他们在崩溃之前采取的步骤)并为他们提供支持的链接。

未来对软件的影响

微软报告称,从Windows错误报告收集的数据对内部开发软件的方式产生了巨大影响。例如,在2002年,史蒂夫鲍尔默指出,错误报告使Windows团队能够修复Windows XP SP1中所有Windows XP错误的29%。使用Office XP SP2修复了超过一半的Microsoft Office XP错误。[19]成功的部分是以80/20规则判定的。错误报告数据显示,只有一小部分的错误导致了使用者可以看到的绝大多数问题。修复20%的代码缺陷可以消除80%或更多用户遇到的问题。纽约时报的一篇文章确认错误报告数据有助于解决Windows VistaMicrosoft Office 2007测试版中出现的问题。[20]

NSA的隐私问题与使用

尽管Microsoft已经提供了隐私保护,但他们承认,个人身份信息可能包含在内存和应用程序数据中,这些数据是在Windows错误报告编译并发送回Microsoft的100-200 KB“minidumps”中编译的。根据微软的隐私政策,他们坚持认为,如果将个人数据发送给微软,它将不会用于识别用户。[21][22]但在向微软报告问题时,用户也需要信任微软的合作伙伴。就目前已授予约450个合作伙伴访问错误报告数据库的权限,以查看与其设备驱动程序和应用程序相关的记录。[23]

较旧版本的WER在没有加密的情况下发送数据; 只有Windows 8的 WER 使用TLS加密。[24]2014年3月,微软发布了针对Windows Vista,7和Server 2008的更新(KB2929733),用于加密WER的第一阶段。[25]

2013年12月,一家独立实验室发现,当新的USB设备插入PC时,WER会自动向Microsoft发送信息。[24]

根据Der Spiegel的说法,微软崩溃记者被美国国家安全局的TAO部门利用入侵墨西哥公安秘书处的计算机。根据相同的消息来源,Microsoft崩溃报告会在NSA的XKeyscore数据库中自动收集,以便于此类操作。[26]

参考文献

  1. ^ 1.0 1.1 What are WER Services?. WER Services. [2018-07-12]. (原始内容存档于2014-05-15) (美国英语). 
  2. ^ An overview of WER consent settings and corresponding UI behavior. WER Services. [2018-07-12]. (原始内容存档于2014-03-11) (美国英语). 
  3. ^ Satran, Michael. WER Functions. msdn2.microsoft.com. [2018-07-12]. (原始内容存档于2008-04-17) (美国英语). 
  4. ^ Satran, Michael. Windows Error Reporting Problem Steps Recorder. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2017-02-24) (美国英语). 
  5. ^ Debugging in the (Very) Large: Ten Years of Implementation and Experience (PDF). [2018-07-12]. (原始内容存档 (PDF)于2018-06-18). 
  6. ^ aahill. Windows Hardware Dev Center dashboard. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2016-03-15) (美国英语). 
  7. ^ [MS-ERREF]: NTSTATUS Values. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2019-01-20) (英语). 
  8. ^ DOMARS. Bug Check Code Reference. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2016-06-24) (美国英语). 
  9. ^ Satran, Michael. System Error Codes. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2017-03-30) (美国英语). 
  10. ^ [MS-ERREF]: HRESULT Values. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2019-01-26) (英语). 
  11. ^ The only thing constant is change – Part 1. WER Services. [2018-07-12]. (原始内容存档于2016-03-05) (美国英语). 
  12. ^ Dashboard Shutdown. sysdev.microsoft.com. [2018-07-12]. (原始内容存档于2015-11-21) (英语). 
  13. ^ aahill. Windows Hardware Dev Center dashboard. msdn.microsoft.com. [2018-07-12]. (原始内容存档于2016-08-26) (美国英语). 
  14. ^ Introducing Windows Error Reporting. Microsoft Empower Programme. [2018-07-12]. (原始内容存档于2019-05-15) (美国英语). 
  15. ^ WinQual Registration Head Aches. iDevelopSoftware. 2008-03-08 [2018-07-12]. (原始内容存档于2016-10-19) (美国英语). 
  16. ^ WER with Thawte authenticode signed app. social.msdn.microsoft.com. [2018-07-12]. (原始内容存档于2012-11-16) (美国英语). 
  17. ^ The great digital certificate ripoff?. Successful Software. 2008-02-27 [2018-07-12]. (原始内容存档于2018-11-22) (美国英语). 
  18. ^ How can a company get access to Windows Error Reporting data?. The Old New Thing. [2018-07-12]. (原始内容存档于2019-02-18) (美国英语). 
  19. ^ Steve Ballmer's letter: Connecting to customers. (原始内容存档于2017-04-09). 
  20. ^ Markoff, John. A Challenge for Exterminators. [2018-07-12]. (原始内容存档于2013-05-13) (英语). 
  21. ^ Microsoft Privacy Statement for Error Reporting. (原始内容存档于2007-10-08). 
  22. ^ Description of the end user privacy policy in application error reporting when you are using Office. (原始内容存档于2014-08-25). 
  23. ^ Microsoft Error Reporting Drives Bug Fixing Efforts -- Redmond Channel Partner. Redmond Channel Partner. [2018-07-12]. (原始内容存档于2017-02-02) (英语). 
  24. ^ 24.0 24.1 Are Your Windows Error Reports Leaking Data?. Forcepoint. 2013-12-29 [2018-07-12]. (原始内容存档于2018-01-29) (英语). 
  25. ^ http://support.microsoft.com/kb/2929733. support.microsoft.com. [2018-07-12]. (原始内容存档于2015-01-10).  外部链接存在于|title= (帮助)
  26. ^ Staff, SPIEGEL. Inside TAO : Documents Reveal Top NSA Hacking Unit. Spiegel Online. 2013-12-29 [2018-07-12]. (原始内容存档于2014-01-07).