.net学习之路——调试程序

  没有人的程序是完美的,这条规则对所有的程序员来说也成立。没有人能在第一次就写出完美的程序来。

  调试工具分为两类,一类是被动的,你等待它们告诉你问题;还有一类是主动的,允许你在程序运行时深入观察,并在逐步运行代码是进行查看。

  如果要检验程序中生成的各种假设是否正确可以用以下几个宏来实现。注意不要让宏实现任何功能,因为在程序生成时这些调试用的宏都会自动删除的。

    1.ASSERT(bAssumption);这个宏的参数是任意的布尔表达式,也就是说返回值要恒为正,一旦返回了负值,就会显示一个警告信息。例如ASSERT(a>=0);当a大于等于0是不会报错,一旦a小于0了就会出现警告信息。

    2. ASSERT_VALID(pObject);这条语句用来测试程序中的对象是否合法,以及对象的内部声明是否准确无误。传入的参数是一个实例化的c++对象。#注意不是对所有的对象都起作用,对象必须是从CObject基类继承而来的,对标准MFC类来说是满足的,但如果要测试自己写的类就要注意满足这些要求了。

    3.ASSERT_KINDOF(classname,pObject);这个宏用来确认pObject对象是不是classname的实例或者是这个类的派生类的实例。也就是说前一个参数为类名,后一个参数为对象名。

    4.VERIFY(bAssumption);这个与第一个功能一样,但是它有个特性就是在发布生成时的逻辑表达式不会被删除。

原文地址:https://www.cnblogs.com/wuyoucao/p/5009899.html