Visual C++调试 ASSERT()和TRACE()工具

Visual C++ IDE提供了功能强大的调试器,包括联编(build)工具和调试(debug)工具,Visual C++的调试工具栏如图2-20所示,在调试状态下,其中的某些按钮才会显示。

Visual C++调试器

从左到右,各按钮的含义如表2-3所示。

Visual C++调试器

 

如果我们发现某个程序中有bug 产生,就可以对其代码部分进行调试,以下罗列出通常采取的步骤。
在可疑的代码处添加断点。
单击工具栏中的【启动】按钮,或者按【F5】键,开始调试运行程序。
当运行至断点时,程序会暂停下来,如图2-21所示。

Visual C++调试器


在暂停状态,我们可以通过打开其他功能窗口来查看程序状态,如:某个变量的值、程序调用栈的结构、寄存器的值等。这些窗口可以通过【调试】→【窗口】菜单项找到,如图2-22所示。

Visual C++调试器

可用的调试窗口如表2-4所示。

Visual C++调试器

通过调试工具,程序员可以及时地观察到调用栈、各内存变量的变化,从而最终找到异常的代码所在。

除调试工具外,Visual C++还提供了两个很有用的宏函数:TRACE()和ASSERT(),它们常常配合调试使用。TRACE的函数原型为:

Visual C++调试器 

TRACE()的效果如图2-23所示。可以看到,TRACE()和printf()的使用方式一样。只不过它的输出不是标准输出设备,而是Visual C++的输出窗口。

Visual C++调试器

断言ASSERT用于检查一些“不应该”发生的情况。ASSERT的函数原型如下:

Visual C++调试器 

ASSERT的含义就是“条件booleanExpression必须得满足”(即条件bExpression为true),如:

Visual C++调试器 

“条件booleanExpression一定得满足”,那么,“不满足”会怎么样?当ASSERT 断言的条件bExpression为false的时候,Visual C++将会给出红色的警告,如图2-24所示。

Visual C++调试器

此时,我们可以单击【终止】按钮以终止该程序;单击【忽略】按钮以继续执行后面的语句;如果要跟踪进去查看错误源,则单击【重试】按钮,这样的话程序将会转至发生ASSERT错误的代码行,并暂停程序执行。

提示

TRACE()和ASSERT()宏只有在调试版本(即_DEBUG宏被定义)时才能奏效。对于Release版本,TRACE()和ASSERT()宏没有任何作用。

此外,Visual C++调试器提供了对内存泄漏的检测功能,考察如下一段包含内存泄漏的C++程序:

Visual C++调试器 

运行如上包含内存泄漏的程序时,可以看到Visual C++的输出窗口产生如下内容,如图2-25所示。

Visual C++调试器

其明确地输出内存泄漏的信息:

Visual C++调试器 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值