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

问题描述 投票:0回答:12

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

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

visual-studio debugging visual-studio-2010 breakpoints external-process
12个回答
10
投票

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

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

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


10
投票

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

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

再次尝试该场景。


7
投票

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

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

有时,显而易见的东西却很难找到。


3
投票

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


3
投票

关闭 Visual Studio IDE 并打开它。现在它可以工作了。我也面临同样的问题。我用这个方法克服了


2
投票

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

  1. 包括

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

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

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

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


0
投票

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

这些操作在大约 80% 的情况下有效。

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

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

如果它不在列表中,请尝试运行该代码。有时,即使它说不会命中断点,但这只是因为在您进入需要它的场景之前,该 dll 尚未加载。尝试一下依赖于 dll 的场景,无论如何它都可能会遇到断点。

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


0
投票

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

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

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


0
投票

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

  1. 打开项目属性是VS2010

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

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


0
投票

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.