Rus*_*uss 8 error-handling production-environment
我正在努力重写我意想不到的错误处理过程,我想问社区:
当您编写的软件崩溃时,您自动和手动捕获哪些信息?
现在,我捕获了一些项目,其中一些是:
自动:
手册:
您捕获的其他信息有助于您发现应用程序问题的真正原因,特别是考虑到大多数用户在被要求告诉您发生了什么时只是简单地粘贴键盘.
为了记录我正在使用C#,WPF和.NET版本4,但我不一定要限制自己.
相关:内容:软件崩溃时收集信息
(这在某种程度上是 Windows / .NET 特定的,但这就是您在问题中指定的内容,我认为这在该上下文中是非常有用的信息。)
除非您的应用程序是严格单线程的,否则您需要一个转储文件(它至少会为您提供所有线程的堆栈),而不仅仅是抛出异常的线程的堆栈跟踪。
生成一个不太大且有足够信息来为您提供有用的托管堆栈跟踪的转储有点棘手,但是有一个非常有用的实用程序,称为clrdump,它可以为您处理一些更详细的细节。
Clrdump 主要是 Microsoft 的 DbgHelp.dll 的包装。您可以直接使用 DbgHelp - 请参阅此问题- 但随后您将得到一个“完整小型转储”,它将与应用程序的虚拟地址空间一样大,这可能非常大。Clrdump 做得很好,它创建了一个小型转储,其中仅包含堆栈跟踪以及足够的信息,以便 SOS 能够读取它们。