前言

我们在发布了自己的App以后,Windows Phone的Error Report机制会帮助我们收集程序的崩溃信息并发送到微软的服务器上,这可以辅助开发者提高App的稳定性。

那么如何利用这些dump file呢?首先我们需要下载这些dump file从微软开发者网站,然后借助调试工具进行分析,我们这里选用Windbg。

下载步骤

1. 登录http://dev.windows.com/en-us/dashboard

2. 选择Windows Phone Store

3. 进入Reports,选择Crash count,选择 App和日期,点积Refresh按钮

4. 点击导出stack traces,这里包括最近30天的崩溃转存记录

5. 开发下载后的Excel文件,这个excel文件里面包含9列。分别是App的名字,App的ID,App的版本号,操作系统的版本号,出现问题的函数,异常类型,在30天内累计的崩溃次数,栈的回溯和Dump File下载地址。

6. 我们可以通过第E和F列快速看一下,是否是由我们的App导致的崩溃,然后点击下载dump file进行分析。


使用Windbg打开dump file

1. 下载windbg从微软的网站:

http://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx

2. 运行windbg,从文件菜单中选择打开crash file,或者使用快捷键Ctrl+D.

3. 设置symbol server,

a. 可以使用快捷键Ctrl + S:

b. 或者命令”.sympath” 命令:

.sympath srv*e:\bclCache*http://msdl.microsoft.com/download/symbols

c. 也可以使用”.symfix”

4. 指定完symbol server以后,我们需要重新加载symbol file,在命令窗口输入”.reload”。命令窗口可以使用快捷键Alt+1定位。

5. 加载SOS模块。SOS.dll是Windbg为了调试managed代码编写的一个扩展命令模块。最新的windbg会自动加载这个模块。

6. 查看是否SOS的版本加载正确。我们首先查看coreclr.dll的版本号,然后对比当前加载的SOS.dll的版本号是否一致。

a. 在命令窗口输入”lmv mcoreclr”。命令lmv是打印出模块的信息,m+模块名字用来指定需要打印的模块,这里是打印coreclr模块的信息。

b. 在命令窗口输入”.chain”。这个命令是显示出默认的加载顺序为所有加载的debug扩展模块。

对比coreclr模块的版本号和查找链中的第一个是否匹配。如果不匹配,我们可以使用”.unload”卸掉已经加载的SOS模块,再次使用”.load + 路径”选择扩展Dll查找链中的正确项。例如:

.unload e:\bclcache\symbols\sos_x86_ARM_4.0.50829.00.dll\503D5669449000

.load c:\Debuggers\SOS

.chain再次查看第一个是否匹配

小结

现在我们已经知道如何下载dump file并如何使用windbg来打开它。后面的文章我举一些实际中的例子来讲解如何找到错误的代码。

分享代码,改变世界!

Windows Phone Store App link:

http://www.windowsphone.com/zh-cn/store/app/博客园-uap/500f08f0-5be8-4723-aff9-a397beee52fc

Windows Store App link:

http://apps.microsoft.com/windows/zh-cn/app/c76b99a0-9abd-4a4e-86f0-b29bfcc51059

GitHub open source link:

https://github.com/MS-UAP/cnblogs-UAP

MSDN Sample Code:

https://code.msdn.microsoft.com/CNBlogs-Client-Universal-477943ab

MS-UAP

2015/1/12

Windows Phone App的dump 文件分析的更多相关文章

  1. Windows Phone App的dump文件实例分析- System.ExecutionEngineException

    前言 在开始这篇文章之前我们先来讲讲如何从高度优化的Release版的Dump中找到正确的异常上下文地址,并手动恢复异常发生的第一现场. 1. 什么是异常上下文 简单来说,在windows体系的操作系 ...

  2. Windows Phone App的dump文件实例分析-Stack Overflow

    前言 这篇文章我们一起来分析一个从Windows Phone Dev Center上下载下来的dump file.首先按照我上一篇的步骤设置好我们的Windbg,并按住Ctrl +D打开dumpfil ...

  3. 蓝屏 Dump文件分析方法

    WinDbg使用有点麻烦,还要符号表什么的.试了下,感觉显示很乱,分析的也不够全面... 试试其他的吧!今天电脑蓝屏了,就使用其dump文件测试,如下: 1.首先,最详细的,要属Osr Online这 ...

  4. Windbg内核调试之四: Dump文件分析

    Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...

  5. 使用GDB 追踪依赖poco的so程序,core dump文件分析.

    前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...

  6. core dump文件分析和调试

    core介绍 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成"核心转储").我们可以认 ...

  7. Java Heap dump文件分析工具jhat简介

    jhat 是Java堆分析工具(Java heap Analyzes Tool). 在JDK6u7之后成为标配. 使用该命令需要有一定的Java开发经验,官方不对此工具提供技术支持和客户服务. 用法: ...

  8. 记一次dump文件分析历程

    一.背景 今天下午,正酣畅淋漓的搬砖,突然运维同事在群里通知,核心服务某个节点内存异常,服务假死.神经一下子紧张起来,赶紧跑到运维那边观察现象. 观察的结果是服务内存溢出,该服务是核心服务,分配了5G ...

  9. windows程序崩溃生成dump文件

    第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错: 此时打开任务管理器,右击相应进程,点击"Create Dump File“: ...

随机推荐

  1. 编译安装或者mysql启动时遇到的错误小记

    编译安装遇到的错误:进入mysql目录 [root@localhost software]# cd mysql-5.6.19 [root@localhost mysql-5.5.11]# cmake ...

  2. android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish().onDestory()和System.exit(0) 三者的区别 Activity.finish() Call this when your a ...

  3. 海量数据相似度计算之simhash和海明距离

    通过 采集系统 我们采集了大量文本数据,但是文本中有很多重复数据影响我们对于结果的分析.分析前我们需要对这些数据去除重复,如何选择和设计文本的去重算法?常见的有余弦夹角算法.欧式距离.Jaccard相 ...

  4. 强大的Spring缓存技术(上)

    缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 ...

  5. 史上最全的常用iOS的第三方框架

    文章来源:http://blog.csdn.net/sky_2016/article/details/45502921 图像: 1.图片浏览控件MWPhotoBrowser       实现了一个照片 ...

  6. 获取当前运行dll文件的路径

    char moduledir[MAX_PATH];  GetModuleFileNameA(GetModuleHandleA("ppdl_BE081_BIW_seal_library.dll ...

  7. Java中有四种常见的Map实现方法

    在 HTML5 之前我们做图片预览主流做法有两种,第一种是通过 Flash 插件来做预览,第二种是 Ajax 实现的假预览,也就是说选择图片文件后,图片其实已经异步上传到服务器,服务器处理后返回图片路 ...

  8. Mysql命令集

    mysql远程授权GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123.com' WITH GRANT OPTION;flush p ...

  9. jsp中文件上床的enctype="multipart/form-data"用法

    jsp表单中必须要有enctype="multipart/form-data"才能文件上传的意思,是设置表单的MIME编码.默认情况,这个编码格式是application/x-ww ...

  10. MySQL提示符含义

    http://www.splaybow.com/post/mysql-prompt-introduce.html mysql> 准备好接受新命令. 说明:正常等待输入的提示符. -> 等待 ...