当前位置: 首页 > news >正文

使用VS2013分析DMP文件

当一个发布的.NET应用程序出现app crash,无法通过日志分析异常原因时,就需要通过分析DMP文件了,传统方式是通过WinDbg来分析DMP文件,但是WinDbg用起来不是很方便,其实VS就是一个很好的DMP文件分析工具,这里我们通过一个简单的控制台项目来分析一个DMP文件。

一、准备一个Demo项目

  (1)在VS中新建一个控制台项目,取名Sobey.NullPointerDemo,并在Main方法中写入以下代码:

    class Program
    {
        static void Main(string[] args)
        {
            Person p = null;
            // NullPointerException will happen in next line
            Console.WriteLine("{0}-{1}", p.ID, p.Name);
            Console.ReadKey();
        }
    }

  其中,Person类的定义如下:

    public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

  经实验,.NET Framework版本号4.0及以上都可以。

  (2)设置为Release,并编译生成可执行文件
  (3)运行.exe程序,出现crash现象,在任务管理器中生成DMP文件(在指定exe上右键菜单中选择创建转储文件)

二、分析DMP文件

  (1)到生成目录下将生成的DMP文件拷贝到Release目录下(和exe、pdb一个目录下)

  (2)双击DMP文件会直接进入VS,可以看到Summary信息

  (3)可选步骤:设置符号路径

  (4)设置关联源代码路径

  (5)一切就绪,点击“调试托管内存”

  (6)查看具体异常原因,定位异常代码位置

  找到了具体异常位置之后,就可以着手改bug了。这是一个很简单的空指针异常,但是一个简单的空指针异常却可以引起程序的崩溃,这也说明我们在编码的时候要时刻注意代码的质量,特别是鲁棒性方面,尤其是需要对NULL指针做过滤。

  最后,感谢Microsoft提供了这么优秀也这么“重量级"的IDE:

 

相关文章:

  • jsp 引用css/js文件返回html网页问题
  • 用户管理 之 Linux 用户管理工具介绍
  • 妙用this关键字
  • 南宁seo教程:巧用页面更新机制保障快照更新
  • JVM原理讲解和调优
  • Microsoft's Office - ATC Shanghai
  • memcached与redis区别
  • openstack-6:安装keystone、memcache和注册keystone
  • SpringBoot 对Future模式的支持
  • 20.4. tex2page
  • 在python中使用zookeeper管理你的应用集群
  • Docker启动/停止/进入容器的常见操作
  • 小论面向对象编程方法
  • git 下载代码到本地
  • Nginx安装、默认虚拟主机、用户认证、域名重定向
  • [笔记] php常见简单功能及函数
  • 「译」Node.js Streams 基础
  • 【RocksDB】TransactionDB源码分析
  • Android系统模拟器绘制实现概述
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Java 多线程编程之:notify 和 wait 用法
  • js写一个简单的选项卡
  • Promise面试题,控制异步流程
  • React Transition Group -- Transition 组件
  • Redis字符串类型内部编码剖析
  • 阿里云应用高可用服务公测发布
  • 基于HAProxy的高性能缓存服务器nuster
  • 想写好前端,先练好内功
  • 一份游戏开发学习路线
  • 源码安装memcached和php memcache扩展
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # Java NIO(一)FileChannel
  • #ifdef 的技巧用法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (二)fiber的基本认识
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (过滤器)Filter和(监听器)listener
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四)linux文件内容查看
  • (五)网络优化与超参数选择--九五小庞
  • (已解决)什么是vue导航守卫
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)关于pipe()的详细解析
  • .NET Micro Framework初体验(二)
  • .Net Web窗口页属性
  • .NET程序员迈向卓越的必由之路
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET中使用Redis (二)
  • 。Net下Windows服务程序开发疑惑
  • ?php echo ?,?php echo Hello world!;?
  • []常用AT命令解释()
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术