ASSER、VERIFY、TRACE详解
ASSERT()被测试它的参数,如果参数为零,则中断执行并打印一段说明消息。在Release版本的程序中它不起任何作用。
ASSERT()使用的时候必须保证参数表达式中不能有函数调用,因此对于任何有函数调用的参数表达式,应该使用宏VERIFY(),以保证表达式中的函数调用在Release版本中会被正确求值。
断言(assertion)用断言信息(程序,模块,assertion行)的对话框执行,对话框右三个按钮:"Break ","Re[eat"("Debug"),and "continue"("Ignore"). "Break"结束程序,"continue"忽略断言,最有用的是"Repeat"按钮,按下它在断言的地方开源代码编辑器。在这里你可以测试所有的变量并明白哪里出了问题。
例如:ASSERT(pPointer);ASSERT(n>0 && n<100);ASSERT(0);
ASSERT在执行简单验证时很有用,但对于c++对象,特别是用cobject派生的对象,则有更好的方法ASSERT_VALID来实现类似操作。作为一般规则,我们应在开始时用每一个对象之前检查数据讹误,
ASSERT_VALID(this);ASSERT_VALID(pView);
VERIFY()
VERIFY ()和ASSERT()很相似,区别在于Release版本中它仍然有效.
TRACE()
TRACE()基本上就是函数printf()的一个复制品,唯一的区别在于它把结果输出到调试窗口。在Release版本中它是无效的。一般是用TRACE0(),TRACE1()。TRACE2()。。。而不用TRACE()。
这三个宏在Release版本中都不会产生任何实质性的影响,他们是否起作用取决于是否定义了预订义了宏/
常用用法:
为了控制传用指针:
void SomeFun(SomeType* pPointer)
{
ASSERT(pPointer);
//some instrctions。
}
你可以在“switch”和“if”操作中捕获奇怪的值
例如:if(nWaterTemp〉=0 && nWaterTemp<50)
{
//some instrction
}
else if(nWaterTemp>=50 && nWaterTemp<=100
{
//some instruction.
}
else {
ASSERT(0);
}
对值得断言:
ASSERT(nSomeValue>=MinValue and nSomeValue<=MaxValue);
ASSERT(nOtherValue !=0)
ASSER、VERIFY、TRACE详解的更多相关文章
- 10046 trace详解(2)--tkprof
10046或10053生成的文件格式比较乱,直接查看有一定的困难,ORACLE自带的一个格式化命令工具tkprof可以将生成的.trc文件进行格式化,具体用说如下: 一.直接输入tkprof不带任 ...
- 10046 trace详解(1)
10046 trace帮助我们解析一条/多条SQL.PL/SQL语句的运行状态,这些状态包括:Parse/Fetch/Execute三个阶段中遇到的等待事件.消耗的物理和逻辑读.CPU时间.执行计划等 ...
- SQL Server 默认跟踪(Trace)捕获事件详解
SQL Server 默认跟踪 -- 捕获事件详解 哪些具体事件默认跟踪文件能够捕获到? --returns full list of events SELECT * FROM sys.trace_e ...
- HTTP和HTTPS详解
http://blog.csdn.net/mingli198611/article/details/8055261/ 转自:http://www.cnblogs.com/ok-lanyan/archi ...
- http协议详解及htt面试题目,常见的http状态码
http协议详解及htt面试题目,常见的http状态码 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP ...
- CentOS7+CDH5.14.0安装全流程记录,图文详解全程实测-8CDH5安装和集群配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了. 准备文件 从 http://archive.cloudera.com/cdh5/par ...
- JNI详解---从不懂到理解
转载:https://blog.csdn.net/hui12581/article/details/44832651 Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 C ...
- [No0000126]SSL/TLS原理详解与WCF中的WS-Security
SSL/TLS作为一种互联网安全加密技术 1. SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket La ...
- (转)Linux curl命令参数详解
Linux curl命令参数详解 命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具, ...
随机推荐
- Arduino "Card failed, or not present"(即找不到SD卡)错误解决方案
http://forum.arduino.cc/index.php?topic=28763.0 Arduino SD自带的例程都是有一个BUG的,必须在pinMode后面加上如下的第二行代码 pinM ...
- 开启Nginx的gzip压缩功能详解
默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行 ...
- 自定义View绘制字符串
import android.app.Activity; import android.os.Bundle; import android.view.Display; import android.v ...
- 初学JavaScript(入门一)
javaScript是世界上最流行的脚本语言 在我们的手机.电脑设备上所浏览的所有网页,以及基于HTML5手机App的交互都是通过javaScript驱动的,所以javascript是前端工作的一 ...
- BITED-Windows8应用开发学习札记之三:如何在Win8应用中实现数据绑定
在微软官方提供的资源中,我们可以看到SampleDataSource.cs已经拥有了定义好了相应的数据结构以及实现类: 建立本地数据 由于我们已经有数据以及相应的数据类,我们需要做的仅仅是将数据放进数 ...
- phpcms的增删改查操作整理
一.查 ①select($where = '', $data = '*', $limit = '', $order = '', $group = '', $key='') /** * 执行sql查询 ...
- int型长度
Ø 基本数据类型 C语言中只有4中基本数据类型——整型.浮点型.指针和聚合类型(如数组和结构等):所有其他类型都是从这4种基本类型的某种变化或组合派生而来. 一.整型家族 整型家族包括char.sh ...
- IE 兼容性写法
1. 条件注释语句 <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> <!--[if IE]> 所有的IE ...
- LeetCode(2) - Add Two Numbers
一道比较基本的LinkedList的题目.题目要求是这样,现在有两个LinkedList,(2 -> 4 -> 3)和(5 -> 6 -> 4),然后从头开始,把每个node ...
- Windows Azure 虚拟网络配置(Point to Site)
说明:本文以Azure国际版为例,中国版在网络位置会存在一定差异. 1. 场景 虚拟网络为我们提供了在Windows Azure云计算环境上构建网络定义的能力,通过虚拟网络,我们可以方便地将Windo ...