为什么VS2010调试器不在我的断点处停止?

时间:2010-08-23 20:28:46

标签: visual-studio debugging visual-studio-2010 breakpoints external-process

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

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

12 个答案:

答案 0 :(得分:10)

我的第一次检查是禁用“Just My Code”

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

再次尝试该方案。

答案 1 :(得分:10)

通过为使用该组件进行调试的应用程序创建配置文件以解决此问题:

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

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

答案 2 :(得分:5)

我有一整天的努力来找出为什么我无法调试我的visual studio 2012控制台应用程序,答案很尴尬。

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

有时很明显很难找到。

答案 3 :(得分:3)

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

答案 4 :(得分:3)

我有一个“Rebuilt”VS2013项目,我无法调试(没有符号)。最后,我看到优化被检查(Project-&gt; Properties-&gt; Build)。我取消选中它并重建。符号最终加载。我的两分钱,只在绝对必要时使用(编译)优化。

答案 5 :(得分:2)

虽然我无法回答为什么会这样,但我可以为您提供解决方法。

  1. 包含

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

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

  4. 菜单工具→附加到流程
  5. 附加到您的流程。
  6. 断点应该在你的代码中触发。 其他断点也应该触发。

答案 6 :(得分:0)

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

这些行为大约占80%。

  • 获取最新代码
  • 清洁
  • 重建
  • 重新启动IIS
  • 再试一次

如果不好,请转到Debug&gt; Windows&gt;模块,如果相关的dll在那里,右键单击它并加载符号。

如果它不在列表中,请尝试运行代码。有时即使它说断点不会被击中,也只是因为直到你输入需要它的场景才加载dll。尝试依赖于dll的场景,无论如何它可能只是命中断点。

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

答案 7 :(得分:0)

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

在对话框中,在 附加到 旁边,点击 选择 ,然后从 自动... 调试这些代码类型 ,您应该检查正确的版本。

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

答案 8 :(得分:0)

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

  1. 打开项目属性为VS2010

  2. 转到编译 - &gt;高级编译选项

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

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

答案 11 :(得分:0)

我在CLR项目中遇到了类似的问题。我在CLR项目中有一些旧的c ++语法。对于我,在工具&gt;选项&gt;调试&gt;一般情况下启用了“使用托管兼容模式”后,它开始达到断点。