并不包含调试信息(未加载任何符号)

今天调试一C++程序,按下F5,老是弹出一对话框显示信息:debugging information for 'myproject.exe' cannot be found or does not match. No symbols loaded. 翻译成中文大概就是:不能找到'myproject.exe' 的调试信息或者调试信息不匹配。符号文件未加载。


起初,我以为是没有生成.pdb文件的缘故,于是,我右击项目文件,点击属性,展开配置属性节点,展开C/C++节点, 点击了General后把Debug Information Format设置为:Program Database for Edit & Continue(/ZI). 跟着,又检查了其它选项,并且确信在项目文件的Debug文件夹下生成了相应的.pdb文件。


可是做了这些,还是没用。仍然弹出那个该死的对话框。


我于是另外新启动了一个VS实例,新建了一个简单的工程,按下F5, 调试没问题,嘿,这问题到底出在哪儿呢??


然后,我心想,你丫狠!看来我得来点比你更狠的,于是乎,我干脆运行咱的.exe文件,然后单击Visual Studio 的Tools菜单,选择Attach to process..., 并找到我的应用程序,还是没用!!!!我要发疯了!!!!


关键时刻咱得保持冷静!!!!分析下!


第一,我这个工程是前几天做过的。


第二,.pdb文件有,手动加载文件也试过。不过没用。


第三,新建一个项目调试,没问题。


脑袋里突然冒出:是不是.suo文件在作怪??


------解决方案-----


1. 关闭掉Visual Studio 实例。


2. 找到解决方案下的.suo文件并删除之。


3. 重新启动Visual Studio,或者直接双击.sln文件打开


4. 成功调试程序!


后来意识到这是Visual Studio非常严重的问题。因为.suo貌似非常容易损坏,但是它里面包含了许多调试信息,包括项目的打开文件列表、所有的断点、以及监视窗口中所有的内容。


可以运行如下命令来删除掉该文件:del /f /a:h /s *.suo


希望对遇到该类问题的朋友有所帮助!!欢迎提出问题讨论!




当前不会命中断点 还没有为该文档加载任何符号
2011-08-15 16:41 1878人阅读 评论(1) 收藏 举报
 
相信很多人在网页编程时都遇到过这个问题,就是设置断点时给出提示,之后不能选中。我今天也碰到这个问题了,足足折磨了我一天。设置是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://www.iieeg.com/newscon.php?id=11917

你可能感兴趣的:(C++,C,dll,mfc,配置管理,debugging,database,library)