在dll的调试状态,实现类似MFC中的TRACE的函数
以前好像看到过忘记了,还望指点

解决方案 »

  1.   

    OutputDebugString也可以输出到output窗口
    不过最好用宏定义自己包装下,不然release版本中也会产生这些调用
      

  2.   

       可以用写日志LOG文件,要看信息时,看一下LOG文件就行了.代码加起来简单,要删除也简单,调试也方便.现在硬盘也大.不用担心容量.
      

  3.   

    用MessageBox()会阻塞程序运行,特别是在调试多线程DLL时,会改变线程的运行次序,与实际的全速运行不同,是不可取的。
    在MFCDLL中也可以用TRACE()。
    OutputDebugString可以在发行版中起作用,这样的性质是非常有用的,因为有时程序会因为外部的配置而产生一些错误,可以用OutputDebugString输出到外部。
    再就是自定义日志文件,将所有调试信息写到外部磁盘上。
      

  4.   

    方法很多,权衡取之。
    1、Win32 DLL里也可以用CRT的断言:_ASSERT,ASSERTE,assert(这个小写的在Release里也起作用)
    2、如果要输出自定义信息可以用 _RPTn, _RPTFn 宏,类似MFC的TRACEn,还有_CrtDbgReport,用法很灵活
    3、如果喜欢消息框,而且是用在对用户输入或操作不当的提示中,也不妨:
    #ifdef _DEBUG
    ::MessageBox(::GetFocus(),...);
    #endif
    或者干脆
    #ifdef _DEBUG
    #define MyDebugCode(abc) abc
    #else
    #define MyDebugCode(abc)
    #endif
    这样就可以用MyDebugCode()来写只存在于Debug版本里的代码