2010-11-19 53 views
1

我想编写一个实用程序,在发生致命错误时创建一个小型转储器dmp文件。我正在使用clrdump api,这看起来相当简单。致命错误小型转储器

我想知道的是,我应该读什么来确定如何在发生致命错误时触发事件,以便创建此小型转储。

我会写在C#中。

谢谢。

回答

1

AppDomain.UnhandledException是你的朋友。

请注意,您可以从e.ExceptionObject获取的异常信息几乎总是比minidump更有用。你是否尝试过使用minidump调试?它们在SetUnhandledExceptionFilter()的回调集中创建时对C/C++程序员非常有用。尽管这在管理程序中不合适,但CLR已经安装了一个。 不是不得不再次使用小转储,并获得干净的堆栈跟踪是.NET的一大优点。

+0

我刚刚被我的主管要求对此进行调查。我认为他们想在内部软件出现问题时使用它们,这可以在以后自动生成并查看,而不是依赖用户反馈。我从来没有在我的生活中做过任何的小型转储调试:)我是一个12个月工业布局的学生。感谢您的回应。 – 2010-11-19 13:47:41

+1

我猜你的主管是个老C黑客。把一个想象中的安全网放在一个有很大漏洞的地方并不是最好的想法。但是,如果你不想让它成为你的问题,那不是你的问题。那不是什么实习都是关于的吗?至少了解它需要什么,谷歌“sos.dll”。 – 2010-11-19 14:19:52

+0

感谢汉斯。我一直在看sos.dll,我已经能够通过即时窗口使用它。我写了一小段代码来生成一个dmp文件,但现在当我打开并尝试运行时!例如,我得到一个错误,指出无法加载mscorwks.dll的PDB,所以我看不到任何细节! – 2010-11-19 14:23:43