Windows Phone App的dump 文件分析
前言
我们在发布了自己的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 文件分析的更多相关文章
- Windows Phone App的dump文件实例分析- System.ExecutionEngineException
前言 在开始这篇文章之前我们先来讲讲如何从高度优化的Release版的Dump中找到正确的异常上下文地址,并手动恢复异常发生的第一现场. 1. 什么是异常上下文 简单来说,在windows体系的操作系 ...
- Windows Phone App的dump文件实例分析-Stack Overflow
前言 这篇文章我们一起来分析一个从Windows Phone Dev Center上下载下来的dump file.首先按照我上一篇的步骤设置好我们的Windbg,并按住Ctrl +D打开dumpfil ...
- 蓝屏 Dump文件分析方法
WinDbg使用有点麻烦,还要符号表什么的.试了下,感觉显示很乱,分析的也不够全面... 试试其他的吧!今天电脑蓝屏了,就使用其dump文件测试,如下: 1.首先,最详细的,要属Osr Online这 ...
- Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- core dump文件分析和调试
core介绍 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成"核心转储").我们可以认 ...
- Java Heap dump文件分析工具jhat简介
jhat 是Java堆分析工具(Java heap Analyzes Tool). 在JDK6u7之后成为标配. 使用该命令需要有一定的Java开发经验,官方不对此工具提供技术支持和客户服务. 用法: ...
- 记一次dump文件分析历程
一.背景 今天下午,正酣畅淋漓的搬砖,突然运维同事在群里通知,核心服务某个节点内存异常,服务假死.神经一下子紧张起来,赶紧跑到运维那边观察现象. 观察的结果是服务内存溢出,该服务是核心服务,分配了5G ...
- windows程序崩溃生成dump文件
第一种: 通过任务管理器:这种适用在程序挂了(crash)的时候进程还未退出,比如我运行程序,出现了下面的错: 此时打开任务管理器,右击相应进程,点击"Create Dump File“: ...
随机推荐
- 金蝶EAS BOS上如何打补丁
主要分为2种方式,直接通过BOS管理平台,去安装补丁 另一种方式就是通过本地zip压缩包去打补丁,以我的安装目录包为例路径为:E:\kingdee\kingserver\eas\admin\patch ...
- Flask备注4(Structure)
Flask备注4(Structure) package 通过Flask可以非常简单的通过一个module(一个py文件)创建一个简单的application.这种简单程序的文件结构如下: /youra ...
- 一台独立的服务器是可以可以建立多个网站的,一个ip地址,一个端口
# 1,若开启虚拟主机,这个一定要有(IP:端口),找到 #NameVirtualHost *:80 修改成: NameVirtualHost 127.0.0.1:80 # 2,修改<Direc ...
- XAF学习笔记之-多表头设计
空闲之余,看了下全英文的DEV 的XAF帮助文档,一半的英文我认识他,一半的英文他认识我,反正拆开成26个字母我全认识 不那么啰嗦了,先看效果 如何做:分以下几步 第一步:打开这个文件,这个文件就是X ...
- [翻译][erlang]cowboy路由模块使用
Cowboy是基于Erlang实现的一个轻量级.快速.模块化的http web服务器. 本文官方原文:http://ninenines.eu/docs/en/cowboy/1.0/guide/rout ...
- ready与onload区别一
<!DOCTYPE html><html> <head> <title>ready与onload区别一</title> <meta c ...
- 初识C语言
C语言是开发iOS软件的基础. 一.C语言简介 1. 简史 1) C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作 ...
- Access to the path '' is denied 解决
环境:iis6 使用silverlight做的上传控件上传文件到某共享目录. 已将在目录的共享安全和安全中加了 共享用户的 权限. 但通过浏览器访问共享目录文件报错:Access to the pat ...
- css3之文本新属性
- Python 第五天 装饰器
装饰器 装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. def wrapper(func): def result(): pri ...