我正在开发 VS2010 中的 C#.NET 类库项目。在我的项目设置 -> 调试设置中,我将项目设置为启动一个运行非常简单的 jscript 文件 (test.js) 的外部程序 (C:\Windows\SysWOW64\wscript.exe)。该脚本只是创建类的一个实例并调用其中一个方法。
问题是当我开始调试时,VS2010 不会在我的任何断点处停止。如果我在 VS2008 中打开完全相同的项目,它确实会在断点处停止。某处是否有阻止断点被击中的新设置?有没有其他人遇到过这个问题?
我正在开发 VS2010 中的 C#.NET 类库项目。在我的项目设置 -> 调试设置中,我将项目设置为启动一个运行非常简单的 jscript 文件 (test.js) 的外部程序 (C:\Windows\SysWOW64\wscript.exe)。该脚本只是创建类的一个实例并调用其中一个方法。
问题是当我开始调试时,VS2010 不会在我的任何断点处停止。如果我在 VS2008 中打开完全相同的项目,它确实会在断点处停止。某处是否有阻止断点被击中的新设置?有没有其他人遇到过这个问题?
我的第一个检查是禁用“只是我的代码”
再次尝试该场景。
要解决此问题,请为使用该组件进行调试的应用程序创建一个配置文件,并使用以下数据进行调试:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
使用此文件,您可以告诉调试器使用正确的运行时版本进行调试(似乎调试器默认使用 4.0 版)。
我尝试了一整天来找出为什么我无法调试我的 Visual Studio 2012 控制台应用程序,而答案令人尴尬。
我在“RELEASE”模式下运行它。
有时显而易见的是很难找到。
关闭 Visual Studio IDE 并打开它。现在它将起作用。对我来说,它也面临同样的问题。我用这种方式克服
我有一个无法调试的“重建”VS2013 项目(没有符号)。最后,我看到优化被选中(项目-> 属性-> 构建)。我取消选中它并重建。符号终于加载了。我的两分钱,仅在绝对必要时使用(编译)优化。
虽然我无法回答为什么会发生这种情况,但我可以为您提供解决方法。
包括
using System.Diagnostics;
在代码的最开始(例如类构造函数)放置以下行:
#if (DEBUG)
while(!Debugger.IsAttached);
Debugger.Break();
#endif
开始调试。
断点应该在您的代码中触发。其他断点也应该触发。
可能有很多原因。通常是因为您尝试针对错误的版本进行调试。
这些操作大约有 80% 的时间有效。
如果不好,请转到“调试”>“Windows”>“模块”,如果有相关的 dll,请右键单击它并加载符号。
如果它不在列表中,请尝试运行代码。有时即使它说断点不会被命中,这只是因为在你进入需要它的场景之前没有加载 dll。尝试依赖于 dll 的场景,它可能只是命中断点。
哦,还有一个想法,重新启动浏览器。您可能从较旧的 dll 中缓存了一些内容。
如果原因是错误的 .NET 运行时版本(这是我的问题),您可以简单地在“附加到进程”对话框中选择正确的版本,而不是创建配置文件。
在对话框中,在Attach旁边单击Select并从Automatically...切换到Debug 这些代码类型,您应该在其中检查正确的版本。
如果这也是您的问题,那么您的断点上可能有“未加载符号”消息。选择正确的版本后,您应该会立即看到不再报告此错误。
对我来说,它是通过以下方式修复的:
打开项目属性是VS2010
转到编译 -> 高级编译选项
将“生成调试信息”从“无”更改为“完整”
问题可能是您的浏览器正在使用您正在使用的页面的缓存版本。尝试在浏览器的地址行中添加一些无意义的额外查询字符串 fx add ?NONSENSE=1234 这会强制浏览器使用新版本的网页,因为它不知道页面最终是否应该与此查询不同. 下次使用 ?NONSENS=1235。
我在本机 C++ 代码中遇到了错误放置断点的问题。原因是我一直在编辑代码,所以代码中的某些行结尾不是 \r\n。除非您搜索 \r\n,否则无法在代码中看到。插入正确的行结束后 \r\n 调试器工作。
我遇到了类似的问题,但它在 CLR 项目中。我在 CLR 项目中有一些旧的 c++ 语法。对我来说,在工具>选项>调试>常规中启用“使用托管兼容模式”后,它开始达到断点。