现在我需要调用一个DLL完成较复杂的事务
而这个DLL本身也是多线程的我发现这个DLL有时会出现很严重的错误
比如非法内存读写等等
从而导致整个软件崩溃推出我该用什么方法来捕获这些异常?
再说一下,这个DLL本身也是多线程的

解决方案 »

  1.   

    __try
    dll里面创建线程的话 ,就没办法了,只能改dll的代码了
      

  2.   

    SetUnhandledExceptionFilter等,然后重启
      

  3.   

    本质上还是应该解决掉DLL中的异常问题
      

  4.   


    你说的是理,可这部分内容不受我控制。并且我不是很想为这个DLL的使用创建单独进程
    因为设计到一些较为复杂的状态更新
      

  5.   

    SetUnhandledExceptionFilter
    这个方法不错的,我也用这个楼主去搜索输出dump文件。
      

  6.   

    这篇文章是否有用使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP
      

  7.   

    崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
      

  8.   


    怎么这个方法在release下不起作用?
      

  9.   


    我需要在发布环境下使用
    所以你说的这个方式不行刚才试了一下SetUnhandledExceptionFilter
    在release下也没用起来
    我不知道是不是什么地方弄错了
      

  10.   


    怎么这个方法在release下不起作用?你如果没源码就没用了,另外最好用高版本的VS,我测试在VS2005经常不起作用,但是VS2010运行良好
      

  11.   


    怎么这个方法在release下不起作用?你如果没源码就没用了,另外最好用高版本的VS,我测试在VS2005经常不起作用,但是VS2010运行良好好吧,我的确用的是VS2005。
    由于一些原因,目前该项目还不能使用VS2010。
      

  12.   

    我还是说明一下条件限制吧,希望各位大侠耐心看一下。我需要调用第三方DLL,该DLL会创建线程。
    现在我认为该DLL存有问题,但我的开发环境没法run这个DLL(因为和设备相关)所以只能在发布环境中捕获错误信息。
      

  13.   

    程序异常crash,抓取dump,最灵活的工具当属微软调试工具包中的adplus。http://support.microsoft.com/kb/286350