.net程序调用第三方库的多线程异常问题
.Net程序调试
.net程序调用第三方库的多线程异常问题
英宁
2012-12-27, 13:54 下午
张老师您好。
公司开发的工具使用了C#,有通过C++ interop调用C++的dll,该dll生成了其它线程,在这个线程上发生了异常。
工具本身的CLR的异常是有用UnhandledException和ThreadException来进行处理,生成了dump的;而这个C++DLL其它线程的异常没办法捕获,SetUnhandledExceptionFilter也没办法处理到。请问是否这种情况下依靠程序自身就无法生成dmp了?
Re: .net程序调用第三方库的多线程异常问题
格蠹老雷
2012-12-27, 20:09 下午
按道理,通过SetUnhandledExceptionFilter设置的顶层异常过滤函数应该可以捕捉到。建议先找一下原因,看是没有设置成功,还是被覆盖了...
Re: .net程序调用第三方库的多线程异常问题
英宁
2012-12-29, 11:10 上午
Raymond wrote:
按道理,通过SetUnhandledExceptionFilter设置的顶层异常过滤函数应该可以捕捉到。建议先找一下原因,看是没有设置成功,还是被覆盖了...
因为是公司内部使用的工具,因此先写了一个外部程序来生成Dump,在注册表注册了程序崩溃的时候的Debugger为那个外部程序。这样至少先解决了问题。
SetUnhandledExceptionFilter不起作用还不知道原因,主要是,如果是自己公司编写的模块总可以找到原因,但是有时候会涉及到第三方模块,这个时候很难直接处理。准备再做一下尝试看看。