WinCE下错误报告的用法

简介:       仔细看了昨晚搜刮到的那篇关于WinCE错误报告的文章,受益匪浅。使用流程已经介绍得足够详细,这里不再赘述。需要参考的同志,请直接看原文。这里补充一点原文中貌似没讲到的,个人觉得很关键的地方,如何在产品中保留错误报告。

      仔细看了昨晚搜刮到的那篇关于WinCE错误报告的文章,受益匪浅。使用流程已经介绍得足够详细,这里不再赘述。需要参考的同志,请直接看原文。这里补充一点原文中貌似没讲到的,个人觉得很关键的地方,如何在产品中保留错误报告。

       那篇文章中提到要将错误报告从Windows的目录下拷贝到别的非易失性的存储器中,以便后续的分析与处理。这在开发过程中是没有问题的。但如果产品已经发布,我们需要从客户的设备中获取错误报告,就行不通了。

       最初测试时发现,当应用程序出错时会在Windows的目录下生成错误报告,但选择“不发送”,从而关闭“错误报告”对话框后,生成的错误报告文件被自动删除。我想原文之所以说要拷贝出来,大概就是这个原因。很显然,我们需要将该目录直接挪到SD卡或者NAND目录中,并且阻止系统自动删除该文件。

       尝试了半天,终于找到了解决办法,修改注册表的相关键值即可。需要修改的主要有以下两项。

[HKEY_LOCAL_MACHINE\System\ErrorReporting\DumpSettings]
    
" DumpDirectory " = " \\Windows\\DumpFiles "                ;此处修改为指定的目录
    
" ExtraFilesDirectory " = " \\Windows\\ExtraDumpFiles "      ;此处修改为指定的目录
    
" CabDirectory " = " \\Windows\\DumpFiles\\CabFiles "    ;此处修改为指定的目录
    
" UploadClient " = " \\Windows\\Dw.exe "
    
" MaxDiskUsage " = dword: 80000
    
" DumpEnabled " = dword: 1

 [HKEY_LOCAL_MACHINE\System\ErrorReporting\UploadSettings]
    
" NoConsentRequired " = dword: 0     ;此处修改为1,取消弹出提示框
    
" DontUpload " = dword: 0             ;此处修改为1,取消上传及自动删除,使其保留在目录中
    
" MaxWeeklyReports " = dword: 0
    
" MaxDailyReports " = dword: 0
    
" UploadSucceededDlg " = dword: 0
    " UploadFailedDlg " = dword: 0

[HKEY_LOCAL_MACHINE\init]
    " Launch95 " = " dw.exe "             ;删除该项,禁止该程序自启动

另外,需要在指定的目录下创建Dumpfiles的目录,否则错误报告也不能正确生成,特别需要注意这一点。所有的配置正确后,再次运行Crash.exe,就可以在B:\Dumpfiles\Ce092009-01目录下生成一个名为Ce092009-01.kdmp的文件。我是在模拟器中测试的,将B:\(Ramdisk)用做模拟器的Storage Card,所以是在该目录下生成了该文件。下面就可以用WinDgb工具进行分析获得的错误报告了。先设定源代码目录、映像目录、符号文件目录,然后打开Ce092009-01.kdmp文件,就可以在源代码中定位到出错的位置,如下图所示。


    至此,这个
BUG就一目了然了,Fix也是很容易的事。

折腾了大半天,最后发现其实改动很小,仅仅是注册表中的几个键值。可不折腾,又怎么知道修改什么地方,怎么修改呢?最近调试一个新的开发板,也有同样的感受,最后修改也许很简单,但如何定位到这个需要修改的地方及如何修改则需要花很多时间。不过没关系,我还是挺爱折腾这些的。

昨天折腾了一个左道,应该能缓解一下目前存在的问题。今天折腾了一个正道,应该能有助于问题的最终解决,双管齐下,希望能让产品更稳定。

      WinDbg 的下载地址: http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.402.msi ,它是一个很强大的工具,用好了也是一门学问,有时间再进一步学习。
目录
相关文章
|
4月前
|
Windows
【原创】DOS下TSR程序的汇编演示代码2--黑屏保护程序
【原创】DOS下TSR程序的汇编演示代码2--黑屏保护程序
|
5月前
|
NoSQL
技术分享:如何使用GDB调试不带调试信息的可执行程序
【8月更文挑战第27天】在软件开发和调试过程中,我们有时会遇到需要调试没有调试信息的可执行程序的情况。这可能是由于程序在编译时没有加入调试信息,或者调试信息被剥离了。然而,即使面对这样的挑战,GDB(GNU Debugger)仍然提供了一些方法和技术来帮助我们进行调试。以下将详细介绍如何使用GDB调试不带调试信息的可执行程序。
151 0
|
Linux Android开发 C++
嵌入式Linux应用程序调试法----写文件调试程序法
嵌入式Linux应用程序调试法----写文件调试程序法
72 0
|
Linux
Linux 内核调试:指令追踪大法
Linux 内核调试:指令追踪大法
315 0
|
Windows
vxworks环境下反汇编工具使用技巧
vxworks环境下反汇编工具使用技巧
372 0
vxworks环境下反汇编工具使用技巧
|
C语言 虚拟化 C++
[知识小节]Windbg常用指令(笔记本)
[知识小节]Windbg常用指令(笔记本)
590 0
|
存储 Java .NET
|
存储 数据建模 Go
Windbg内核调试之二: 常用命令
运用Windbg进行内核调试, 熟练的运用命令行是必不可少的技能. 但是面对众多繁琐的命令, 实在是不可能全部的了解和掌握. 而了解Kernel正是需要这些命令的指引, 不断深入理解其基本的内容. 下面, 将介绍最常用的一些指令, 使初学Kernel调试的朋友们能有一个大致的了解.
1272 0
|
Windows
Windbg内核调试之三: 调试驱动
这次我们通过一个实际调试驱动的例子,来逐步体会Windbg在内核调试中的作用.由于条件所限,大多数情况下,很多人都是用VMware+Windbg调试内核(VMware的确是个好东西).但这样的调试需要占用大量的系统资源,对于和我一样急性子的朋友来说这是不可接受的:).
1297 0