前言
之前的一篇文章"VS调试dump文件时提示未找到xxx.exe或xxx.dll"中,我简单的介绍了一下在调试dump文件是提示未找到exe或者dll的原因,那就是路径不正确或者版本不对应,最近在调试项目的时候发现了新的问题,那就是系统的dll不对应,如果是项目中dll的不对应我们可以还原版本找到,可是要是系统的dll不对应,那么我们只能从发布机上复制了,或者自己去下载了,具体的提示如下图所示:
解决问题
一开始尝试把系统库的路径都加上让程序自己搜索,比如System32,SysWow64等等,但是还是找不到,貌似在我的机器上就没有这个版本的系统dll,如果能下载到对应版本的dll就好了,但是我尝试了一下还是不太容易找到的,并且后续可能有一大堆的dll找不到,要是一个个下载那得愁死,还是尝试其他方法吧,后来发现符号设置中有一项“Microsoft 符号服务器”,索性勾上试试,如下图所示,然后启动调试,
这时情况发生好转,没有立马提示找不到dll,而是开始下载所需要的那些系统dll,看样子是只下载指定路径中没有的,下载的过程比较长,可能是我的网比较慢的原因,下载过程如下图所示:
全部下载完成后果然可以正常调试了,查看下载路径下的KERNELBASE.dll的版本,与dump文件中指定的版本一致,截图如下:
至此我们就找到了系统dll版本不对应时应该如何调试崩溃dump文件的方法。