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
Windows系统显示语言的修改及“我们无法获取此Windows显示语言”报错的处理
Windows系统显示语言的修改及“我们无法获取此Windows显示语言”报错的处理
|
4月前
|
IDE 开发工具
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
444 0
驱动开发:WinDBG 常用调试命令总结
Windbg是Microsoft公司免费调试器调试集合中的GUI的调试器,支持Source和Assembly两种模式的调试。Windbg不仅可以调试应用程序,还可以进行Kernel Debug。结合Microsoft的Symbol Server,可以获取系统符号文件,便于应用程序和内核的调试。Windbg支持的平台包括X86、IA64、AMD64。
418 0
|
编译器 Windows
在windows命令行编译Qt程序并纠错
在windows命令行编译Qt程序并纠错
325 0
在windows命令行编译Qt程序并纠错
|
Windows 存储
获取Windows 外壳信息通知(VB源程序)
研究了一番,优盘的插入、拔出,光盘的插入、取出都有了相应的通知,效果不错
2794 0
|
Windows
Windbg内核调试之三: 调试驱动
这次我们通过一个实际调试驱动的例子,来逐步体会Windbg在内核调试中的作用.由于条件所限,大多数情况下,很多人都是用VMware+Windbg调试内核(VMware的确是个好东西).但这样的调试需要占用大量的系统资源,对于和我一样急性子的朋友来说这是不可接受的:).
1239 0