面向开发人员的Windows错误报告(WER)
Windows错误报告是更新的Windows XP上Dr.Watson的替代品。它监视故障并收集可以发送到要分析的服务器(如果用户允许)的有用信息。这项功能帮助微软修复了很多错误——由于收到的报告,微软能够对错误进行优先排序(基于最大点击数或其他严重性度量),并解决了很多问题。真正酷的是,任何开发人员都可以为其产品请求报告。来自PDC 2003的Bill Gates:“每当应用程序或系统出现故障时,您就能够将报告发送回Microsoft。我们得到了很多这样的报告,我们已经创建了非常好的数据管理系统来查看这些东西,从而了解哪些驱动程序是不可靠的。我们允许任何在Windows上运行应用程序的人注册并获取与其应用程序相关的报告,而且我们还有winqual.microsoft.com,人们可以在这里完成这项工作。”
以下是WER的工作原理:当进程崩溃时,WER收集数据并将其发送到服务器(如果用户允许;默认情况下,WER请求同意)。对于非Microsoft程序,此服务器是Winqual(Windows质量联机服务)。在服务器端:基于崩溃的参数,创建一个bucket来保存新的错误,或者将报告添加到已经存在的bucket中(这意味着以前有人遇到过这个问题)。开发人员可以分析故障;如果根据收集的数据找不到解决方案,他/她可以请求其他信息(转储、注册表项值等)。此外,他/她还可以添加一条解释失败的消息。当同一类型崩溃的实例发生时,服务器将显示开发人员设置的消息,并在必要时要求提供附加信息。如果开发人员找到一个解决方案,在下一次崩溃时,服务器可以提供解决方案(见下图)。阅读有关错误报告收集和分类的详细信息
在Vista和更高版本上,程序崩溃的用户可以转到“控制面板”->“问题报告和解决方案”(启动wercon.exe),查看机器上发生了什么故障。
在这里,您可以检查解决方案并查看已识别的问题
您可以查看每个问题的参数,并查看对报表进行分类的bucket。
作为开发人员,您可以转到Winqual并注册以接收失败报告。但还有其他方法可以利用WER。您可以将WER配置为将报告发送到您的一个服务器,这样您就可以直接查看它们。例如,假设您有两台要监视的机器。您可以使用System Center Operations Manager(SCOM)和Agentless错误监视(AEM)将所有报告传输到监视服务器,而不是发送到Winqual。您甚至不必使用Active Directory集成和组策略,但可以手动配置WER注册表项来指定CorporateWERServer(使用您喜欢的端口和安全选项)。
另一种利用WER的方法是在本地保存报告。在本文的其余部分中,我假设WER是enables(默认设置)。
正如我所说,WER试图收集尽可能少的数据,并要求更多只有在必要时。但是可以配置此行为。如果需要在每次崩溃时收集转储,可以将HKEY_CURRENT_USER\Software\Microsoft\Windows\Windows Error Reporting\ForceQueue设置为1(或将HKLM\Software\Microsoft\Windows\Windows Error Reporting\ForceQueue设置为1,以全局应用设置)。这将强制生成转储并包含在报表中。报表通常保存在%localAppData%\Microsoft\Windows\WER的两个目录中:ReportArchive(当服务器可用时)或ReportQueue(当服务器不可用时)。从这里,数据被传输到服务器。查看生成的报告内容的另一种方法是使用wercon.exe(如上所述)。如果您想在本地保持数据,只需将服务器设置为一个非现有的机器(HKEY-LoalAlxMault\Studio\\微软\Windows \Windows错误报告\CytAtWiServer=Nosiver Server)。
现在如果你想在不同的情况下生成崩溃的报告呢?可能您正在监视事件日志或某些性能计数器(如CPU或内存),并希望查看违反条件时会发生什么。或者您希望生成的数据不仅仅是转储(例如,您的应用程序有一个要保存的跟踪文件,或者您希望复制事件日志条目等)?好吧,你很幸运,因为WER有你可以使用的API。使用此API,只要满足所需条件,就可以:
- 使用WerReportCreate创建报表
- 使用WerReportAddDump进行转储
- 使用WerReportAddFile添加其他感兴趣的文件
- 最多设置10个参数,可用于对故障进行分类(故障程序、故障函数、堆栈跟踪,以及您认为有助于调查此问题的任何参数)
- 关闭并与WerReportSubmit一起提交报告
有一件事你必须记住,那就是WerReportAddDump在进行转储时会一个接一个地挂起线程。这无法确保内存视图的一致性—一个线程可以挂起,然后当下一个线程挂起时,可能会更改内存或造成其他损坏;如果应用程序有很多线程,这尤其麻烦。如果需要一致的视图,您有责任挂起所有线程。另外,最好在进程外调用此函数。
好的,现在您知道了如何使用WER在发生故障时始终生成转储,将报告发送到您指定的服务器或在本地对其进行排队,并生成自定义报告。希望您会发现这些信息对调试和监视与应用程序相关的问题很有用。
面向开发人员的Windows错误报告(WER)的更多相关文章
- IE调试网页之四:F12 开发人员工具控制台错误消息 (Windows)(转载)
F12 工具控制台可以报告在运行时期间发生的错误和信息消息.本文将介绍错误消息,并提供有关如何修正这些错误的建议. 简介 F12 工具控制台错误消息提供了一些代码(例如,SEC7111 或 HTML1 ...
- PX4/Pixhawk---高速成为开发人员(Windows)
1 高速成为开发人员新手教程(翻译)---官方 1.1 编译环境之版本号控制系统 (1)安装MSysGIT 安装完毕后,配置GIT. 安装注意 安装过程中除了以下一步外,其它的步骤都採用默认安 ...
- 系统队列中的Windows错误报告
- [转载]Windows系统的错误报告保存在哪个文件夹里?
转自:http://www.xitonghe.com/jiaocheng/xp-786.html Windows系统的错误报告保存在哪个文件夹里? 发布时间:2014-10-31 20:52:20 ...
- 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序
原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...
- 提供给Android和iOS开发人员的UWP移植向导
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:前几天微软发布了一个针对Android和iOS开发人员理解Windows Apps概念 ...
- Web开发人员常犯的10个错误
说到开发一个运行在现代网络中的网站:Web开发人员需要选择虚拟主机平台和底层数据存储,准备编写HTML.CSS和JavaScript用的工具,要有设计执行方式,以及一些可用的JavaScript库/框 ...
- F12 开发人员工具中的控制台错误消息
使用此参考解释显示在 Internet Explorer 11 的控制台 和调试程序中的错误消息. 简介 使用 F12 开发人员工具进行调试时,错误消息(例如 EC7111 或 HTML1114)将显 ...
- 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序
面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序 Ajax 为更好的 Web 应用程序铺平了道路 在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java™ ...
随机推荐
- .netcore docker noe4j
1.借用docker搭建noe4j环境 docker pull neo4j docker run -d --restart=always -p7474: -p7687: -v /root/docker ...
- Java学习:内部类的概念于分类
内部类的概念于分类 如果一个事物的内部类包含另一个事物,那么这就是一个类内部包含另一个类.例如:身体和心脏的关系,又如:汽车和发动机的关系. 分类 成员内部类 局部内部类(包含匿名内部类) 成员内部类 ...
- 数据库‘master’中拒绝CREATE DATABASE权限
今天在创建数据库的时候,遇到了没有创建数据库权限的问题,后来百度了一下解决了该问题. 1.先用windows身份验证登录,在安全性下面的找到自己创建的登录名,双击,在弹出的对话框中为它赋予权限. 2. ...
- 接口XMPPConnection
接口XMPPConnection 所有已知的实现类: AbstractXMPPConnection,XMPPBOSHConnection,XMPPTCPConnection 公共接口XMPPConne ...
- nginx 反向代理Jenkins
进入nginx 配置文件 cd /root/nginx/conf 找到nginx.conf 修改server块内容: server { listen 80; ...
- Dubbo 几个很实用但是很少人知道的功能
dubbo功能非常完善,很多时候我们不需要重复造轮子,下面列举一些你不一定知道,但是很好用的功能; 直连Provider 在开发及测试环境下,可能需要绕过注册中心,只测试指定服务提供者,这时候可能需要 ...
- Servlet HttpServletResponse对象、HttpServletRequest对象
HttpServletResponse对象(response)的常用方法 setCharacterEncoding("utf-8") //设置响应的编码字符集 setCont ...
- WDA演练一:用户登陆界面设计(一)
一,新建用户表: 用户和密码参考标准的.这里给用户分了几个维度,以便后面进行接下来的业务设定. 二,新建ZLY_PORTAL 程序. 除了MAIN视图外,在添加LOGON视图. 1.导入预先做好的主页 ...
- 基于 Vue + Element 的响应式后台模板
项目地址 https://github.com/caochangkui/vue-element-responsive-demo 主要功能 响应式侧边栏 面包屑导航(结合router.js) 路由动效 ...
- Golang Web应用 创建docker镜像笔记(win 平台)
记录的是 本地编译好了再创建容器镜像的方法 ,这样子生成的镜像文件比较小,方便分发部署 win 平台需要设置golang交叉编译 生成linux可执行文件 CMD下: Set GOOS="l ...