这个问题一般有两个版本
1.当前不会命中断点,还没有为该文档加载任何符号。
2.当前不会命中断点,源代码与原始版本不同。
要解决第一个问题,就要了解一种文件格式“PDB(Program DataBase)”,我们在给一个.Net程序集设置断点的时候,所有的调试信息都存放在这个文件,这里不打算深入探讨它,只需要知道它描述了我们程序集的断点,要调试程序就得加载它就够了.
那么第一个问题的描述我们可以看成是没有加载到PDB文件或者加载失败了,解决方法是
在程序调试时,使用Visual Studio的 调试》窗口》模块 查看当前程序加载的所有模块,找到你要调试的模块,右键菜单中就有一个加载符号的选项,选择对应的PDB文件即可。
关于PDB文件更详细的介绍 PDB文件概说
现在来讨论第二个问题
其实这个问题应该是很容易解决的,我在网上搜索的时候发现很多人没描述到重点,甚至是重新建立了一个项目来解决.我们知道每次F5开始调试程序都算是生成了一个新版本,那么这个问题的极有可能就是PDB文件记录的源码版本与你现在调试的版本不一致.
再让我们想想什么时候会出现这种情况呢,常见的会影响到程序版本的操作就是当你编译失败时,Visual Studio询问你是否继续并运行上次的成功生成
这个时候应该就影响到了程序的版本,但我有个不明白的地方就是为何PDB文件不会每次编译都重新生成呢?还是以上推断另有隐情?
那么这个时候解决方案就只能是同一PDB文件与源码的版本一致啦,我一般图省事,都是清理整个解决方案再重新生成,解决.
以上就是我对这个问题的一些经验,我觉得只能解决问题(反正我每次都可以( ̄y▽ ̄)╭),却感觉还没有摸到这个问题的更深本质,希望园子里遇到过的都来探讨一下。