应用程序处于中断模式 - 无法确定原因

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

当我的应用程序终止时,我发现 IDE 有时会中断。

发生这种情况时,调用堆栈为空,并且线程列表显示一些不会向我透露任何信息的线程。

当我选择“调试器”-“步入”时,IDE 似乎正常退出/最终退出,因此我不知道如何进一步调查导致中断的原因。

单击“检查正在运行的任务”不会显示任何任务。 单击“继续执行”似乎会正常退出调试。 单击“显示诊断工具”会显示事件“执行时停止:执行时停止”,这并没有告诉我更多信息。

附上截图。

我如何调查导致此中断的原因?

编辑: 我已经尝试了一位论坛成员的建议,但我认为这不会产生任何对我有帮助的结果。这是截图:

vb.net debugging ide visual-studio-2017
9个回答
22
投票

如果发生异常的代码是库的一部分或不是您编写的其他内容,您可能无法看到发生异常的代码。以下内容可能会有所帮助:

调试 > 选项 > 常规 > 取消选中“仅启用我的代码”


13
投票

在我的一个网络应用程序中,我遇到了同样的问题,为了找出问题所在,在搜索类似问题后,大多数人建议更改我的调试选项。因此,在调试选项中,一般情况下,我标记了第二个选项“当一个进程中断时中断所有进程”,并且几乎在底部,“启用本机编辑并继续”; “应用更改并继续”。

有了这个,我的应用程序终于在出现问题的地方停止了(ajax不喜欢的字符串中的非法字符),并且能够评估这些值并找出问题所在,随时随地编辑代码直到它起作用。 这是我的调试器选项的屏幕截图。 希望你能抓住你的错误:)

Debugger options


4
投票

当您在调试器中时,您可以导航到监视窗口并使用伪变量来显示有关根本原因的一些信息。一个特别有用的是

$exception

检查有关伪变量的文档。


4
投票

我没有找到任何方法来实际调试问题。 我用暴力方式解决了这个问题:

我一一删除了所有程序集和 COM 对象,直到错误消失。

就我而言,我在模块中有一个带有 WithEvents 的公共控件。 看来 VB.NET 根本不喜欢这样。 从现在开始,我将把控件及其withevent放在一个表单中。

然而,主要问题仍然存在:Visual Studio 没有提供任何帮助来轻松隔离问题。


4
投票

转到异常设置并取消选中“Magad Debugging Assistants”


2
投票

发生这种情况的原因是某些方法或构造函数无法访问(私有或内部),请将其设置为公共。

XAML需要调用方法来启动应用程序


2
投票

当单线程 Winforms 应用程序需要超过 60 秒才能完成主线程中的操作时,也可能会发生这种情况。

我以肮脏的方式解决了这个问题,在处理时间过长的过程中,从主线程定期调用 Application.DoEvents() 。 Application.DoEvents 调用之间发生的异常在 IDE 中得到正确处理。


0
投票

这只是当您在调试模式下运行程序时的警告消息。 如果您更改为“释放”模式,您将不会再看到此消息。


0
投票

我遇到了类似的问题,虽然附加进程会在中断模式下抛出异常应用程序,但我使用了上述所有建议,例如:

  1. 调试 > 选项 > 常规 > 取消选中“仅启用我的代码”
  2. 以Release模式而不是Debug模式编译。

对我来说,有效的是,在我发现我正在调用 HIDSharp.dll 中的外部组件之后,使用并行堆栈搜索线索,创建的句柄没有被释放,没有使用 dispose 或 close,所以它正在使用外部资源,并且作为结果它处于休息模式。

希望它可以帮助人们在应用程序中寻找句柄或循环。

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