【问题标题】:.net application crashes unexpected without exception.net 应用程序意外崩溃,无一例外
【发布时间】:2016-02-04 12:02:25
【问题描述】:

我有一个崩溃的 .NET 2.0 应用程序,它在应用程序崩溃时不会给出异常或任何其他类型的消息。我正在捕获 Application.ThreadException 事件,崩溃时没有收到任何内容。运行几天后,应用程序消失了! Windows 事件日志中没有消息,没有转储文件或其他任何内容......我尝试在几台电脑上运行该应用程序,但几天后,问题出现了。

应用程序正在通过 TCP/IP 连接与另一台 PC 通信,并且所有数据始终有效,没有断开连接或其他任何情况。有足够的内存,在崩溃的时候也是如此。磁盘空间也没有问题。没有升级到 .NET 4.0 的选项。

此时应用程序正在windbg下运行,所以我希望这会提供一些信息..

如果您对此有任何经验,或者有一些有用的提示或工具,请告诉我!

【问题讨论】:

    标签: .net crash


    【解决方案1】:

    如果您使用 TCP/IP,那么您很可能使用线程。如果线程因未处理的异常而终止,这在调用 EndXxxx() 时很常见,那么您的应用程序将终止。如果在机器上关闭了 Windows 错误报告,这可能是无声的,在服务器上并不少见。至少捕获 ObjectDisposedException 以便您可以处理突然断开或强制关闭的连接。

    是的,为 AppDomain.CurrentDomain.UnhandledException 编写一个事件处理程序,在您的 Main() 方法中订阅它。记录或显示 e.ExceptionObject.ToString() 的值,以便您可以准确判断它正在死去的原因。

    【讨论】:

      【解决方案2】:

      当 .Net 应用程序突然退出而没有任何错误提示或未处理的异常处理程序触发时,您的应用程序很可能遇到堆栈溢出。在许多情况下,这将在不运行任何处理程序的情况下快速终止进程。

      【讨论】:

      • 有没有办法在事件日志中获得某种跟踪或某些东西?甚至只是“我死了”?
      • @John,它应该出现在事件日志中,但它只会说“堆栈溢出”。我发现 WinDbg 在这里通常比 VS 更好,它会中断并让您有机会查看堆栈,而 VS 更有可能在调试时突然退出。
      • 我预计事件日志中会有一些内容,但 OP 说什么都没有。将使用哪个事件源、ID 和日志?
      • @John 我不相信事件日志中的条目是有保证的。但这是一个我没有深入了解的领域
      【解决方案3】:

      试试AppDomain.UnhandledException。 Application.ThreadException 仅在 UI 线程发生异常时引发。

      【讨论】:

        【解决方案4】:

        我遇到过这个问题。

        我编写了一个在其他应用程序上执行击键模拟的 .Net 应用程序。我会让它运行一整夜,希望能在早上完成我所有的工作。它刚刚消失了。它每次进入和退出例程时都会写一个日志,这样我就可以准确地看到它做了什么。没有,没有异常记录。只是工作工作工作工作工作。 And then, Nothing.

        原来是因为我使用了一堆 API 调用,而且我非常频繁地调用它们。这导致了某种内存泄漏,大概是在我的应用程序的工作区中。

        <dirtyhack> 我解决它的方法是编写 another .Net 应用程序(应用程序 2),它启动了崩溃的应用程序(应用程序 1)。经过这么长时间,应用程序 1 将自行终止,但外壳应用程序 2 就在之前终止。然后应用程序 2 将启动应用程序 1 备份。 </dirtyhack>

        以此类推,直到所有工作完成!凌乱而令人沮丧,但最终工作得非常漂亮:) 我敢肯定有很多 much 更好的方法来做到这一点。我可能没有正确编组我的 COM API 调用或其他什么。

        但似乎关闭应用程序并重新启动它会释放内存(以及泄漏)并让它重新启动。

        在你的情况下可能没有用,但那是我的故事。阿门。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-29
          • 1970-01-01
          • 2018-04-25
          • 2015-12-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多