VS2008调试技巧——断点失效
在调试的时候,往往发现某一行代码写错了,想修改后,继续调试。但是有时修改代码后会出现这样弹出框"此源文件已更改,不再与以下版本文件匹配,该版本文件用于生成所调试的应用程序"。如果点确定代码调试还需要重新开始。这样极大的影响了调试的效果和效率。如下图的弹出框。
碰到这样的情况,需要修改Visual Studio的设置。
菜单 "调试/选项和设置"中弹出如下框。去掉"调试/常规/要求源文件与原始版本完全匹配"的钩钩。
原因:
一、断点失效的问题描述。
工具栏将生成模式设置为Debug,在某行代码(证实为有效)上添加了断点,开始调试。程序一起动,断点就失效了。具体表现:标识断点行首的实心圆点转变为空心圆圈。
二、原因分析与解决方案。
1.如果项目中的两个或更多的源文件具有同一名称,调试器在确定断点设置在哪个文件时可能会有问题。当创建的模块与链接到的“调试”库的某一组件具有相同名称时,经常会发生这种情况。
解决方法:若要解决此问题,请输入源文件的完整路径名。您可以在“文件断点”对话框中更改文件路径名。
2.在其他情况下,尽管对应于断点的源文件存在,但是调试器可能无法找到该源文件。如果源文件已更改并且源代码与调试的代码不再匹配,则将出现此情况。如果希望 Visual Studio 显示与调试的版本不匹配的源代码,请清除在“选项”对话框中的“调试”类别下的“常规”节点中的“仅使用与原始版本完全匹配的源代码”选项。还可以通过选中“文件断点”对话框中的“允许源代码与原始版本不同”来绑定断点。也就是说,如果在之前的Debug模式运行过程中,修改了代码,将会导致运行的代码文件和原始文件版本不一致,在这种情况下,也有可能出现上述情形。
解决方法:通过菜单命令{工具}-->{选项}-->{调试}-->选中{要求源文件与原始版本完全匹配}。
3.运行模式与生成模式不一致。尤其是当生成模式被设置为Release,而以Debug模式运行时,将会出现该问题。并且由于Debug模式运行所依据的可执行文件,并没有因为本次生成操作而更新,也就是没有反应编程者最新的修改的影响,常常会使得程序表现异常,感觉“代码修改后不起作用”。
解决方法:检查工具栏内的运行模式,和生成菜单中的“生成配置”以及“批生成”中的设置是否协调。