导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

简单问题 什么函数能从debug窗口打印数据?

zdk 2003-03-05 04:10:59
什么函数能从debug窗口打印数据?
...全文
9 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wpmsoft 2003-03-05
ASSERT不可以,应该是TRACE

1、基本概念

跟踪语句(trace statements)可使程序执行,并使程序员可对可变值进行查看。它们提供了一个用于观察的程序,并且独立于一个交互式的调试器,但是最具有特色的是它们常用于对调试器提供的信息进行补充。在VC中,跟踪消息通常输出到输出窗口中的Debug标签,也可以重新输出到一个文件中。跟踪语句的特性如下:

.跟踪语句用于报告代码中重要的运行事件。

.跟踪语句的编译通常是有条件的,并只存在于调试版本中,而在发布版本中不被编译。

.跟踪语句不能包含程序代码或对程序代码有间接的影响作用。

.跟踪语句的目的是向程序员提供信息,而不是向用户。

跟踪语句也是调试语句,它可以执行程序,并且在运行中程序员可以查看变量。跟踪语句对于那些使用交互式调试器很难调试的程序是很有效的。

跟踪语句和断言的区别如下:

.跟踪语句是无条件的,断言是有条件的布尔语句。

.跟踪语句用于显示程序执行和变量值,不直接显示bug,断言用于显示出bug。

.跟踪语句将信息输出到调试窗口或文件中,可被随意地忽略,断言打断程序的执行。

2、MFC中的跟踪语句

在MFC中,你可以使用TRACE和AfxOutputDebugString宏、CObject::Dump虚拟函数和AfxDumpStack函数。TRACE宏由AfxDump实现,AfxDump由AfxOutputDebugString实现。AfxOutputDebugString宏和AfxDumpStack函数可以在所有版本中编译,其他只能在调试版本中编译。

(1)TRACE宏有以下形式:

_TRACE(reportType,format);

_TRACE0(reportType,format,arg1);

_TRACE1(reportType,format,arg1,arg2);

_TRACE2(reportType,format,arg1,arg2,arg3);

_TRACE3(reportType,format,arg1,arg2,arg3,arg4);

在MFC中,推荐使用TRACEn宏,当使用TRACE宏时需要使用_T宏来格式化参数以正确解决Unicode的校正,而TRACEn不需要。

MFC TRACE宏中的一个缺点是AfxTrace函数使用一个512字符固定大小的缓冲区,这使得它在跟踪长字符串时是无用的。

(2)CObject::Dump

CObject类有一个转储(dump)虚拟函数,所有继承CObject的类都可以通过重载这个函数,输出它们的值。

3、Visual C++消息Pragma

消息Pragma实际上是一个编译时的跟踪语句,你可以使用它来警告在预处理过程中发现的潜在的编连(build)问题。典型的例子:

#if (WINVER>=0x0500)

#pragma message (“NOTE:WINVER has been defined as 0x0500 or greater.”)

#endif

消息Pragma是非常有用的,尤其是在复杂编连中。然而,如果你要检测一种特定的问题,而不是潜在的问题,使用#error预处理来代替打断编译会更直接一些。

每当你的程序中有错误而你想得到更多信息的时候,你应该去查看一下跟踪消息。由于VC输出窗口的缓冲区是有大小限制的,因此如果跟踪消息数据产生的速度超过输出窗口处理的速度,那么消息会塞满缓冲区,导致数据丢失。避免这个问题的简单方法是在输出大量数据的代码段如转储对象时,调用Sleep API函数。

回复
bill_jia 2003-03-05
TRACE
回复
liangs 2003-03-05
ASSERT
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

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