我写一个程序a.exe,要调用dll, b.dll
b.dll中可能有错误,如
b.dll
void fun()
{
char a[10]="123";
a[12]='c';
}
这种错误,
 
在a.exe 怎么截获你所调用的b.dll中的错误信息?

解决方案 »

  1.   

    用DLL工程调试,setting--debug--Executable for debug session指定为a.exe
      

  2.   

    你可以在调用 fun 函数的时候使用异常捕获
    try
    {
      func();
    }
    catch(...)
    {
       printf("There is an error occured in b.dll\n");
    }
      

  3.   

    最好还是写log,其实你在EXE里怎么做,Dll里也一样
      

  4.   

    程序总是预先设置的。错误信息常常是自己设置好的。要捕获try catch。如果要监测系统错误使用getlasterror(),要获得地址使用指针。如果要获得详细错误信息需要对所有错误信息预先设置。如果想到最高境界。想让程序自己爆出究竟怎么了,可能非常难,不一定会实现。就是微软也是将错误类型分类,显示相关信息。如果没有提前设置好的意外错误肯定做不到。
      

  5.   

    你的dll里面没有报错的模块的话,exe来获得错误是不可能的吧。
      

  6.   

    try
    {
      func();
    }
    catch(...)
    {
       printf("There is an error occured in b.dll\n");
    }
      

  7.   

    第一,使用C++的try..catch关键字进行C++异常捕获,这种方法平台无关;
    第二,使用Windows提供的结构化异常处理机制,使用__try..__except..__finally进行捕获,这种方法适合于C程序,但是仅限于在Windows上运行,个中优劣你自己权衡。
      

  8.   

    异常处理还是加在DLL的可能有错的函数里,catch到之后可以向上throw。