相信很多人在网页编程时都遇到过这个问题,就是设置断点时给出提示,之后不能选中。我今天也碰到这个问题了,足足折磨了我一天。设置是debug没错,我也没有找到C/C++->常规->调试信息格式
这个东东,估计是C++里的设置,我用的是C#。将”要求源文件与原始版本完全匹配”的勾取消我也试了还是不行,webconfig里的debug设置也是true。折腾了一天才发现,我要调试的文本所处的文件夹里还有一个webconfig,这里的debug是false。我上网找了一下,才知道原来最外边的webconfig是总的。文件夹内部也可以设webconfig,这个webconfig继承了总webconfig的信息的基础上还拥有子文件夹自己的属性。所以导致我的总webconfig虽然debug是true。但因为文件夹内的程序要参照内部webconfig。所以还是不能正常设置断点进行调试。真是粗心惹的祸。
万恶的调试不到断点。把vs的各种选项翻来复去的勾来勾去。想尽了办法,已用过的办法有:
一、删除引用项目的debug
二、配置管理器中把所有项目的“生成”打勾、“配置”全部选成“debug“,切忌release
三、配置管理器中“活动解决方案配置”、新建一个方案
四、将引用目录统一设到某个目录,防止没有引用到最新的(源码与dll版本不匹配)
五、工具、选项、调试、常规中的“要求源文件和原始版本完全匹配”的勾去掉
五种办法都用过了。还是没有用。
最后偶然想到,出现这个问题的原因基本上有两个:
一、要调试的dll不在调试进程的进程空间,调不到
二、源代码使用的dll与调试的源代码的版本不对,自然调试不到
第一条out了。肯定是第二条。终于想起来了。我引用了三四个项目文件,有的项目文件没有引用“工程”上的现有项目,而是直接引用了一个一直在用的dll。把那个引用删除,然后改成引用到现有项目。
http://johnsmithblog.blogbus.com/logs/15017286.html VS2005中设置的断点无效:“当前不会命中断点,还没有为该文档加载任何符号”。折腾了一阵,其实问题主要出在没有生成调试信息。解决方法如下:
(1)项目-〉属性-〉配置属性-〉C/C++-〉常规-〉调试信息格式,这里不能为“禁用”。
(2)项目-〉属性-〉配置属性-〉链接器-〉调试-〉生成调试信息,这里设为“是”。
(3)2005默认的MFC程序是使用动态MFC库(Use MFC in a Shared DLL)来链接的
而动态MFC库使用的是Multi-threaded DLL (/MD)
由于XP对于PE文件格式监测更加严格.
就会导致部分使用多线程DLL的可执行文件在调用的时候出错
修改项目属性的编译开关
Project->Property->configuration Properties->C/C++->Code Generation->Runtime Library
修改成Multi-threaded (/MT)
希望这篇文章能帮到和我遇到同样问题的人:)
http://blog.csdn.net/zztoll/article/details/6688949
其实问题可能还不能解决,有时候我们在一个解决方案中使用别人的项目,比如在windows下自己写的项目引用了Linux下编译通过的项目的静态链接库,这时候需要进行其他的配置。