【问题标题】:The application is in break mode. your app has entered a break state,应用程序处于中断模式。您的应用已进入中断状态,
【发布时间】:2017-10-31 10:23:31
【问题描述】:

我发现自己遇到了与here 相同的问题,我在 dll 中使用 Windows 窗体(这是用于 Autocad 插件),我无法调试我的代码,因为我收到“应用程序处于中断模式.您的应用程序已进入中断状态,但当前没有执行所选调试引擎支持的代码”。我已经尝试了this list 中的所有建议,但没有一个对我有用。一件奇怪的事情是,我可以中断构造函数,但使用控制器/配置对象的事件会获取该页面。

任何想法为什么会发生这种情况?

提前致谢

【问题讨论】:

  • 不涉及线程吗?
  • 还没有,有一种方法可以在某个时候对 Web 服务器进行异步调用,但现在只是使用控制器通过 EF 访问本地数据库中的某些数据的几种形式.但是页面会显示在表单中的每个事件中。
  • 大部分建议都是我应该开始的。此外,它是否没有打开两次(或在另一台 PC 上)。确保并在构建下运行“清理” - 并确保该过程没有多次启动。另外,请确保您的构建是有效的,即您没有说“编译错误 - 继续使用旧构建”等。
  • 一些对我有帮助的东西,当我因为错误而得到这个时,是对disable the 'Just My Code' in the debug settings的建议。然后我能够正确地看到异常被抛出的位置。

标签: c# .net dll autocad


【解决方案1】:

我也有同样的问题。在做了一些分析后发现一些依赖项目没有正确构建。重建所有依赖项目对我有用。

【讨论】:

    【解决方案2】:

    对我来说,解决方案是仅安装 Oracle.ManagedDataAccess.Core NuGet 包。我也安装了 Oracle.ManagedDataAccess,我需要卸载它们以修复中断模式错误。

    【讨论】:

      【解决方案3】:

      我的 Visual Studio 2017 15.8.6 遇到了这个问题。 也许我的代码设置是“允许不安全代码”,但它具有相同的错误代码。 解决方案是单击工具 > 选项 > 调试 > 常规 > 使用托管兼容模式并激活它。 我从this forum 找到了解决方案。

      【讨论】:

        【解决方案4】:

        重新启动 Visual Studio 为我解决了这个问题。

        【讨论】:

          【解决方案5】:

          在我的例子中,我在调用 MVC API 端点时收到了同样的消息,并且它还引发了堆栈溢出异常。原因是使用支持字段编写的外部 dll 中的对象属性。属性的 set 访问器被意外写入设置属性而不是导致无限循环的支持字段,因此堆栈溢出异常。请注意 setter 中缺少的下划线。

          private string _Prefix;
          public string Prefix
          {
             get { return _Prefix; }
             set { Prefix = value; }
          }
          

          虽然您的问题可能与我的不完全一样,但在外部 dll 中也发生了类似的情况。

          【讨论】:

            【解决方案6】:

            我从未使用过 Autocad,但我为 Solidworks 和 Creo Parametrics 制作了一些插件。当我的断点不起作用时,我通常会这样做:

            1. 确保在项目设置的构建选项卡上

              • DEBUG 常量打开
              • 调试信息设置为完整
              • 优化代码已关闭
            2. 在有问题的代码中添加 System.Diagnostics.Trace.WriteLine("something unique"); 并在没有附加 Visual Studio 的情况下运行它,以确保实际调用了您的代码。请与 sys internals 中的DebugView utility 联系。

            3. 确保已加载正确的 dll 副本:
              1. 像往常一样从 Visual Studio 运行您的解决方案
              2. 检查您是否连接到正确的进程。
              3. 在 Autocad 中执行触发代码的操作。
              4. 在 VS 的 Debug 工具栏中点击 Break All 按钮
              5. 打开 Debug->Windows->Modules 窗口并确保您的 dll 存在于列表中,路径正确并且旁边有您的 dll 的 pdb 文件。
            4. 将呼叫添加到 System.Diagnostics.Debugger.Launch(); 和 System.Diagnostics.Debugger.Break(); 给你的代码。

            希望这会有所帮助,如果您需要对任何步骤进行说明,请告诉我。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-06-05
              相关资源
              最近更新 更多