【问题标题】:Debugger stops when there is no breakpoint VS2010VS2010无断点时调试器停止
【发布时间】:2011-10-25 22:54:29
【问题描述】:

我最近更改了调试器中的一个选项,我认为这是导致此问题的原因,但我似乎无法“撤消”它...我用谷歌搜索,所有点击都返回相反的“为什么调试器在断点处停止'

无论如何,有人可以解释一下吗?

编辑:当我在调试模式下按 f5 时。每次。它进入 Program.cs 并在

处停止
Application.SetCompatibleTextRenderingDefault(false);

Main()

【问题讨论】:

  • “停止”是什么意思?多常?在什么情况下?
  • 是否因为异常而停止?
  • 一些调试器有一种机制在启动时暂停,或者启动暂停,这样就可以在启动代码中设置断点。不知道VS2010有没有这样的选项。
  • 这是 Main() 方法中的第一条语句。应该与它有关。
  • 只是一个随机建议...断点位置存储在 .suo 文件中(在项目的根目录,.sln 文件所在的位置 - 确保您可以查看隐藏文件)。删除此文件没有什么大问题,因为它会在您关闭解决方案时重新创建。尝试关闭 VS,删除 .suo 文件,重新打开,看看是否可以解决问题。

标签: c# .net visual-studio-2010


【解决方案1】:

我知道的旧线程,但我刚刚遇到了同样的问题。我所做的只是删除所有断点(对我来说是 Ctrl+Shift+F9),然后对我的启动项目进行清理,然后是重建,然后运行。之后它在没有断点的地方停止中断。

【讨论】:

  • 我注意到,当您在与其他文件同名的文件中设置断点时,往往会发生这种情况。例如,如果您在不同的项目中有两个“Program.cs”文件,并且在一个中设置了断点,则调试器似乎会在其他文件中的这些行上停止
  • 好发现!浪费了一个小时
【解决方案2】:

我刚刚遇到了同样的问题,但我的问题不是因为选项更改。我想我找到了原因,但没有解决它的方法。我有一个包含多个项目的解决方案,涉及的项目有:

  • 业务逻辑
  • 数据访问
  • 控制台应用程序

在 BL 和 DA 中,我都有一个名为 Credit.cs 的类。这两个类位于不同的命名空间中。

当我在 BL.Credit.cs 的第 235 行设置断点时,即使没有设置断点,调试器也会在 DA.Credit.cs 的第 236 行停止。我认为这是 Visual Studio 中的一个错误。

当我在 BL 中删除断点时,随后也不会在 DA 中停止。

如果你想投票https://connect.microsoft.com/VisualStudio/feedback/details/699804/debugger-stops-on-same-line-in-different-class-where-there-is-no-breakpoint,我已经提交了一个错误

【讨论】:

  • 在一个解决方案中的一对 MVC 3 项目中遇到了相同的 功能。两者都有一个带有奇怪交互断点的AccountController.cs。在这里和 Connect 上投票。谢谢!
  • funny.. 我有 2 个 programm.cs,问题就出现了
  • 谢谢! MS 在 2010 年从未修复过此问题。白痴!
【解决方案3】:

以下是在每个具有相同名称的类中激活断点行为的解决方法,即使完全限定名称不同。设置断点后,转到断点窗口(调试 | Windows | 断点,如果它尚未启动)。右键单击在太多同名类中触发的断点(例如,当您只希望 Project1.Action 具有断点时,Project2.Action 中断)并选择“条件”。将条件值设置为:this.GetType().FullName == "Project1.Action"。

此后,条件使执行只在具有正确的完全限定名称的类上中断。

【讨论】:

  • 我在 Visual Basic 中使用了下一个:Me.GetType().FullName.Contains("Business")。如果有许多类可以使用,则不完全匹配。
【解决方案4】:

它是通过给您一个异常而停止,还是只是完全停止您的应用程序的执行?如果您的代码中没有 UnHandledExceptionHandler,它可能看起来只是停止,但实际上您有一个异常。

更新: 这是您的 Main 方法应该采用的方式来捕获未处理的异常,因为 try/catch 并不总是有效。

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {
        throw new NotImplementedException();
    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        // You should/MAY see an error right here.
        throw new NotImplementedException();
    }

【讨论】:

  • 它只是停止,然后我再次按 F5 并继续正常。
  • 您是否有上述未处理异常的事件处理程序?如果你不这样做,你什么都看不到,它就结束了。
  • 在它周围放置了一个 try catch,没有异常引发 - 它运行得很好。总是要按 f5 3 次的不便没有错误
  • 感谢您的代码,但仍在执行此操作。我将您的 2 个事件处理行粘贴到 EnableVisualstyles 行上方,就像您的示例一样,现在它进一步细分了 2 行。我记得不久前对工具-> 调试进行了修改,原因我现在什至不记得了,我修改了我在谷歌上读过的一篇文章中的一些选项,自从它做到了这一点。我确信它与其中一个调试选项有关,但我不知道哪个没有...
猜你喜欢
  • 2012-06-23
  • 1970-01-01
  • 2010-12-12
  • 2018-10-29
  • 2023-03-12
  • 1970-01-01
  • 2015-06-30
  • 2010-11-25
  • 2011-07-14
相关资源
最近更新 更多