gpt4 book ai didi

c# - 在 .NET 中处理粗鲁的应用程序中止

转载 作者:太空狗 更新时间:2023-10-29 23:42:32 24 4
gpt4 key购买 nike

我知道我什至问这个问题是在向皇家怒火敞开心扉,但我想我会看看 StackOverflow 是否有任何解决我遇到的问题的方法......

我有一个 C# 应用程序在客户端站点以我无法在本地重现的方式失败。不幸的是,我很难(不可能)获得任何有助于隔离问题根源的信息。

我有一个相当广泛的错误监控框架,它在所有常见的地方监视未处理的异常:

  • 我控制的线程中的 Backstop 异常处理程序
  • WinForms 异常的 Application.ThreadException
  • AppDomain.CurrentDomain.UnhandledException

在我可以访问的地方记录详细信息。

这在过去对识别生产代码中的问题非常有用,但并未提供有关当前系列问题的任何信息。

我最好的猜测是核心问题是一种“粗鲁的”异常类型(线程中止、内存不足、堆栈溢出、访问冲突等),它们正在升级为粗鲁的关闭,从而破坏进程在我有机会看到发生了什么之前。

当我的进程崩溃时,我可以对快照信息做些什么有用的事情吗?理想情况下,我能够写出我的自定义日志格式,但如果我能有一种可靠的方法来确保在某处写入故障转储,我会很高兴。

我希望我可以实现从 CriticalFinalizerObject 派生的类,并让它在处理时发出最后一次错误注销,但在我测试的 StackOverflow 场景中似乎没有触发。

由于缺少代码签名证书,我无法使用 Windows 错误报告和 friend 。

我不是想从任意异常中“恢复”,我只是想记下发生错误的地方。

有什么想法吗?

最佳答案

您可以尝试创建一个 minidump文件。这是一个 C++ API,但应该可以编写一个小的 C++ 程序来启动您的应用程序并保留进程句柄,等待进程句柄,然后在应用程序结束时使用进程句柄创建小型转储。

关于c# - 在 .NET 中处理粗鲁的应用程序中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2196959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com