1.打开windows任务管理器,找到崩溃的进程,右键=》创建转储文件
2.打开vs。文件=》打开=》文件。打开你刚才导出的文件:
上面的图是打开后的界面,有比较基础的信息统计。我们可以看到进程框架那一项,是64位转储,如果用64位转储,那么你的调试器就必须是64位的。点击使用仅限托管进行调试,就可以像debug那样,调试dmp文件了。这个时候你可能会遇到第一个问题:
这个是因为程序运行的.net环境和vs所在的环境版本不一致造成的,会提示找不到mscordbi.dll这个版本的文件,我不知道是我没有设置好,还是vs在这一块确实有bug,设置符号路径并没有用处,按照这个提示操作,也没有任何用处,查看官方文档,也找不到有用发的信息,网上的信息相当少。这里我提供一下我的解决方案。
2.1打开程序运行电脑的这个路径:C:\Windows\Microsoft.NET,这里包含了.net的运行库,比如我这台测试电脑的:
一个是64位的,一个是32位的,有些人可能只有一个文件夹,没有64位那个文件夹,这个并不影响,有的话就去对应的位数文件夹下去找,没有,就在唯一的那个文件夹下找就行了。打开这个文件,里面就包含我们需要的mscordbi版本:
2.2把红框的整个文件夹拷贝出来,放到你的调试电脑里面,把刚才的dmp文件放到这里文件夹里面。再用vs打开dmp文件,应该就不会再提示找不到mscordbi了。如果32位的不行就试试64位的。
3.解决掉找不到mscordbi.dll的问题后,再点击使用仅限托管进行调试,这个时候你可能会遇到第二个问题,就是找不到.pdb调试文件:
这个调试文件,必须和你打包的那个一致,如果你的程序中途修改过,重新生了pdb文件,那么你新打包的.pdb文件是不可用的,这里的解决办法是,把你之前拷贝到测试机上的pdb文件拷贝出来到你的本地电脑里,然后点击设置符号路径:
点击添加,把刚才拷贝的pdb的路径放进去:
然后就可以 进行分析了--下一篇讲解如何分析