Tag: clrdump

SetUnhandledExceptionFilter如何在.NET WinForms应用程序中工作?

我正在开发一个项目来增强我们的生产调试function。 我们的目标是在任何未处理的exception上可靠地生成minidump,无论是管理exception还是非托管exception,以及它是在托管或非托管线程上发生的。 我们目前使用优秀的ClrDump库,但它并没有完全提供我们需要的确切function,我想了解exception过滤背后的机制,所以我开始尝试自己。 我开始按照这篇博客文章自己安装SEH处理程序: http : //blogs.microsoft.co.il/blogs/sasha/archive/2007/12.aspx 。 这种技术适用于控制台应用程序,但是当我从WinForms应用程序尝试相同的事情时,我的filter不会被调用任何种类的非托管exception。 ClrDump可以做什么,我不做什么? ClrDump在所有情况下都会生成转储,因此仍必须调用其exceptionfilter… 注意:我知道ADPlus的function,我们也考虑过使用AeDebug注册表键……这些也是可能性,但也需要权衡。 谢谢,戴夫 // Code adapted from LONG WINAPI MyExceptionFilter(__in struct _EXCEPTION_POINTERS *ExceptionInfo) { printf(“Native exception filter: %X\n”,ExceptionInfo->ExceptionRecord->ExceptionCode); Beep(1000,1000); Sleep(500); Beep(1000,1000); if(oldFilter_ == NULL) { return EXCEPTION_CONTINUE_SEARCH; } LONG ret = oldFilter_(ExceptionInfo); printf(“Other handler returned %d\n”,ret); return ret; } #pragma managed namespace SEHInstaller { public […]