The source file is different from when the module was built.


Source file: D:\Projects\StereoMatch\stereomatcher.cpp

Module: D:\Projects\StereoMatch\Debug\StereoMatch.exe

Process: [4024] StereoMatch.exe

The source file is different from when the module was built. Would you like the debugger to use it anyway?



At StereoMatcher.cpp, line 166 (‘ComputeCorrespondence()’, line 128)

The breakpoint will not currently be hit. The source code is different from the original version.

To allow the breakpoint to be hit when the source code is different, right-click on the breakpoint, choose ‘Location …’, and turn on ‘Allow the source code to be different from the original version.

To allow this for all breakpoints, disable the option ‘Require source files to exactly match the original version’ under Tools, Options, Debugging, General’


When the compiler generates debug information, it will generate a hash (AFAICT, only MD5 is supported at this point) over all contributing source files (i.e. the .cpp file and all #include’d files). This information along with the full path of the files on the build machine eventually end up in the PDB file.

Now when the debugger tries to obtain a source file, it gets the full path name from the PDB file does some path-based mapping and opens the file. Then it generates the hash and check if it matches the one saved in the PDB.

In your case, it does not and that suggests your source file is outdated. You can force the debugger to ignore such mismatches, but it is obviously a feature designed to prevent you from looking at outdated source files while debugging.

Are you quite certain sources and debug information are from the same version (obviously you could just rebuild on your box to make sure)? May it works if you…

Delete all the files in the folders:

..\bin\Debug , ..\bin\Release, ..\obj\Debug , ..\obj\Release, …obj\Debug\Refactor

For your primary program and the aditional projects in the solution and recompile.


If there are any static libraries that you link to, these might be causing the problems. Do you see the problem for all files? Are these files included from precompiled source files (e.g. in static libs)?

There’s the dia2dump sample, that might help you understand the problem. You need to build it first. Once you have, you can dump the hash for some of the conflicting files and compare against the real MD5 hash of the source files.


Update 2011-02-10

今天用VS2010时又一次遭遇到这个问题,clean rebuild code analysis运行了几遍后下的断点还是不能hit,疯了,要找个彻底的解决办法,虽然闭了debug选项里的精确一致后可以断到,但总觉得不爽,有点自欺欺人,可source确实是和build时一致的,最后发现把项目架子下对应的.suo文件删了就可以了,真是莫名其妙!

Powered by Zoundry Raven