使用.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

posted @ 2013-06-13 15:27  beta2013  阅读(621)  评论(0编辑  收藏  举报