我有一个解决方案,从VS(Visual Studio)2010移植到VS2017,从一台机器移植到另一台机器。我可以调试,而我不能。我需要知道问题是什么。在运行时,我看到断点标记被更改为包含警告,但我找不到可能出错的地方。似乎一切都还好。
答案 0 :(得分:1)
1)尝试重建应用程序。确保它在" 调试"模式。
2)如果它在VS2010中工作正常但在VS2017中失败,我想知道Visual Studio是否混淆了正确代码类型的配置,如果是这样,你可能需要手动选择.NET版本。如果您在VS2010中使用Framework 3.5,但在Visual Studio 2017上使用的是Framework 4.6,默认情况下会自动确定要调试的代码类型(v4.6,v4.5,v4.0)。在这种情况下,您需要单击"选择..."按钮"附加到流程"窗口并选择托管(v3.5,v3.0,v2.0)。
3)尝试从“调试”菜单中清除/删除所有断点,选择“删除所有断点”。原因是它刷新了项目的Visual Studio设置文件。
4)潜在的解决方法:取消选中"要求源文件与原始版本匹配..."在选项,调试中。
答案 1 :(得分:0)
启动进程时,如果断点图标变为空心并带有警告符号,则调试器无法确定程序的哪一部分对应于源代码的那一行。这通常是因为构建与可执行文件,DLL或PDB文件已过时。
进入这种情况的一种常见方法是不注意构建失败,然后让调试器尝试运行与当前源不对应的旧可执行文件。如果Visual Studio对某些依赖项感到困惑并且没有重建需要重建的所有内容(这可能发生在对解决方案和/或项目文件进行重大更改之后,例如,在升级)。
在这些情况下,清除构建目录并强制Visual Studio重建所有内容。这通常会让你重新同步。
在DLL代码中设置断点时,该断点将出现在空心警告状态,直到加载DLL。如果您的程序使用延迟加载或手动加载DLL(例如,通过LoadLibrary调用),您通常会看到这一点。加载DLL后,DLL中的任何断点图标都应返回正常的红球状态。如果它还没有你认为DLL应该被加载。检查调试器中的“输出”窗口,看它是否真的已加载,以及是否有任何关于从该DLL加载相应符号的警告或错误。
答案 2 :(得分:0)
就我而言,可以从“ 发布”模式更改为“ 调试”模式!