11

我正在开发 VS2010 中的 C#.NET 类库项目。在我的项目设置 -> 调试设置中,我将项目设置为启动一个运行非常简单的 jscript 文件 (test.js) 的外部程序 (C:\Windows\SysWOW64\wscript.exe)。该脚本只是创建类的一个实例并调用其中一个方法。

问题是当我开始调试时,VS2010 不会在我的任何断点处停止。如果我在 VS2008 中打开完全相同的项目,它确实会在断点处停止。某处是否有阻止断点被击中的新设置?有没有其他人遇到过这个问题?

4

12 回答 12

11

我的第一个检查是禁用“只是我的代码”

  • 工具 -> 选项
  • 调试器
  • 取消选中“仅启用我的代码”

再次尝试该场景。

于 2010-08-23T20:32:20.593 回答
10

要解决此问题,请为使用该组件进行调试的应用程序创建一个配置文件,并使用以下数据进行调试:

<?xml version="1.0"?>
<configuration>
  <startup>
     <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

使用此文件,您可以告诉调试器使用正确的运行时版本进行调试(似乎调试器默认使用 4.0 版)。

于 2011-03-09T15:42:28.637 回答
6

我尝试了一整天来找出为什么我无法调试我的 Visual Studio 2012 控制台应用程序,而答案令人尴尬。

我在“RELEASE”模式下运行它。

有时显而易见的是很难找到。

于 2012-12-18T22:11:22.747 回答
3

关闭 Visual Studio IDE 并打开它。现在它将起作用。对我来说,它也面临同样的问题。我用这种方式克服

于 2015-04-16T08:58:56.547 回答
3

我有一个无法调试的“重建”VS2013 项目(没有符号)。最后,我看到优化被选中(项目-> 属性-> 构建)。我取消选中它并重建。符号终于加载了。我的两分钱,仅在绝对必要时使用(编译)优化。

于 2015-09-03T21:11:39.110 回答
2

虽然我无法回答为什么会发生这种情况,但我可以为您提供解决方法。

  1. 包括

    using System.Diagnostics;
    
  2. 在代码的最开始(例如类构造函数)放置以下行:

    #if (DEBUG)
                    while(!Debugger.IsAttached);
                    Debugger.Break();
    #endif
    
  3. 开始调试。

  4. 菜单工具→附加到进程
  5. 附加到您的流程。

断点应该在您的代码中触发。其他断点也应该触发。

于 2010-08-24T13:21:41.637 回答
0

可能有很多原因。通常是因为您尝试针对错误的版本进行调试。

这些操作大约有 80% 的时间有效。

  • 获取最新代码
  • 干净的
  • 重建
  • 重新启动 IIS
  • 再试一次

如果不好,请转到“调试”>“Windows”>“模块”,如果有相关的 dll,请右键单击它并加载符号。

如果它不在列表中,请尝试运行代码。有时即使它说断点不会被命中,这只是因为在你进入需要它的场景之前没有加载 dll。尝试依赖于 dll 的场景,它可能只是命中断点。

哦,还有一个想法,重新启动浏览器。您可能从较旧的 dll 中缓存了一些内容。

于 2013-01-30T02:34:20.253 回答
0

如果原因是错误的 .NET 运行时版本(这是我的问题),您可以简单地在“附加到进程”对话框中选择正确的版本,而不是创建配置文件。

在对话框中,在Attach旁边单击Select并从Automatically...切换到Debug 这些代码类型,您应该在其中检查正确的版本。

如果这也是您的问题,那么您的断点上可能有“未加载符号”消息。选择正确的版本后,您应该会立即看到不再报告此错误。

于 2013-04-16T08:04:03.567 回答
0

对我来说,它是通过以下方式修复的:

  1. 打开项目属性是VS2010

  2. 转到编译 -> 高级编译选项

  3. 将“生成调试信息”从“无”更改为“完整”

于 2013-08-21T03:02:10.727 回答
0

问题可能是您的浏览器正在使用您正在使用的页面的缓存版本。尝试在浏览器的地址行中添加一些无意义的额外查询字符串 fx add ?NONSENSE=1234 这会强制浏览器使用新版本的网页,因为它不知道页面最终是否应该与此查询不同. 下次使用 ?NONSENS=1235。

于 2014-11-24T09:58:27.007 回答
0

我在本机 C++ 代码中遇到了错误放置断点的问题。原因是我一直在编辑代码,所以代码中的某些行结尾不是 \r\n。除非您搜索 \r\n,否则无法在代码中看到。插入正确的行结束后 \r\n 调试器工作。

于 2016-03-31T10:41:47.190 回答
0

我遇到了类似的问题,但它在 CLR 项目中。我在 CLR 项目中有一些旧的 c++ 语法。对我来说,在工具>选项>调试>常规中启用“使用托管兼容模式”后,它开始达到断点。

于 2016-07-21T08:12:24.603 回答