dll中输出调试信息

x22ray 2009-10-30 05:15:50
在dll的调试状态,实现类似MFC中的TRACE的函数
以前好像看到过忘记了,还望指点
...全文
666 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gg606 2009-10-30
  • 打赏
  • 举报
回复
方法很多,权衡取之。
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版本里的代码

Kevin_Perkins 2009-10-30
  • 打赏
  • 举报
回复
用MessageBox()会阻塞程序运行,特别是在调试多线程DLL时,会改变线程的运行次序,与实际的全速运行不同,是不可取的。
在MFCDLL中也可以用TRACE()。
OutputDebugString可以在发行版中起作用,这样的性质是非常有用的,因为有时程序会因为外部的配置而产生一些错误,可以用OutputDebugString输出到外部。
再就是自定义日志文件,将所有调试信息写到外部磁盘上。
ccss020 2009-10-30
  • 打赏
  • 举报
回复
可以用写日志LOG文件,要看信息时,看一下LOG文件就行了.代码加起来简单,要删除也简单,调试也方便.现在硬盘也大.不用担心容量.
wocow3 2009-10-30
  • 打赏
  • 举报
回复
OutputDebugString也可以输出到output窗口
不过最好用宏定义自己包装下,不然release版本中也会产生这些调用
x22ray 2009-10-30
  • 打赏
  • 举报
回复
只想调试时输出啊。。这个有点太那个了。。。
hongya6088 2009-10-30
  • 打赏
  • 举报
回复
用MessageBox();

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧