• 使用.dmp+vs分析异常


    环境准备

      公共符号缓存目录

        在系统临时目录之外的地方创建一个目录
        如d:\VsSymbolsCache\

      应用程序文件目录

        运行相关文件
          .exe
          .dll
          资源文件等
          .pdb

        如d:\MyApplication\



    过程

      配置“VS>工具>选项>调试”中各选项

        常规

    •       不勾选【启用“仅我的代码”】
    •         Release版的应用程序在编译时经过了vs优化,勾选此选项后无法显示我们的代码,而Debug版没有这个问题
    •       不勾选【要求源文件与原始版本完全匹配】
    •       勾选【为断点和当前语句突出显示整个源行】

        符号

    •       勾选“Microsoft符号服务器”,并在下面的“在此目录下缓存符号”的文字框中填写设置的公共符号目录(d:\VsSymbolsCache\)
    •       单击新建符号目录按钮,填写应用程序的.pdb文件所在的目录(d:\MyApplication\)

      使用VS打开.dmp文件,单击“使用混合进行调试”后等半天

        可以打开“输出”窗口与“模块”窗口看相关的信息

      通过各窗口查看StackTrace(主要是找到引发崩溃的异常所在线程)

        “并行堆栈”窗口
          图形方式显示所有线程的StackTrace
          在此窗口中右键“显示外部代码”后就能在各个能显示StackTrace的窗口中直接显示托管代码(若有源文件)
        “线程”窗口
          列表所有线程
          一般线程名显示为“RtlRaiseException”的线程是抛出托管异常的线程
          先观察“优先级别”高的线程
        “调用堆栈”窗口
          看当前线程的StackTrace

    勉強心を持てば、生活は虚しくない!
  • 相关阅读:
    【Thinkphp教程】URL路由功能解析
    MYSQL 错误#145解决方法
    【Thinkphp教程】空模块
    【Thinkphp教程】 如何进行模块分组
    mySQL中删除unique key的语法
    使用php让浏览器刷新
    Spring+Jpa整合的过程中遇到的一个问题。。。纠结了我半天。。。
    关于mule studio的应用
    解决eclipse和myeclipse不能编译项目的问题
    ajax fileupload上传组件的使用感悟
  • 原文地址:https://www.cnblogs.com/beta2013/p/3377260.html
Copyright © 2020-2023  润新知