基本知识:
在build dll/exe文件和pdb文件的时候,会有一个GUID被写入dll/exe文件和pdb文件中去,调试器根据这个GUID来判断二者是否匹配。
每次重新build的时候,GUID都会不同,即使源代码没有变化。
对于一个dll或者exe文件,调试器是如何寻找对应的pdb文件的呢? 他并不是寻找具有相同文件名的pdb文件,而是在PE头里面寻找。每一个dll/exe文件都有一个PE头,其中有一项是规定了pdb文件的名称的。最简单的方法是用一个二进制编辑器打开dll/exe文件,搜索pdb即可。
当然也有专业的工具专门检查,比如windbg自带的一个工具叫做symchk.exe。运行:
symchk.exe a.dll -v -s 。
就可以在当前目录下搜索a.dll的pdb文件了。
另外还有一个工具叫做chkmath.exe,他不仅可以检查dll文件和pdb文件是否匹配,而且如果不匹配的话,可以强行匹配,当然这么做是有风险的。下载网站是 http://www.debuginfo.com/tools.html
参考link : http://blog.youkuaiyun.com/superleolx/archive/2011/01/12/6131972.aspx