调试技巧

1.调试标记

为了避免在bug找到后,要删除调试代码,我们可以利用预处理器的选择编译功能,在需要调试时,将编译“开关”打开,故障解除后,将编译“开关”关闭。这样编译器在编译文件的时候,不会把不需要的调试代码编译成目标代码,减少了目标文件的大小。这里所说的“开关”就是起到一个调试标记的作用,常用的标识名是:DEBUG(注意,不能使用NDEBUG,这是C中的保留字)

#define DEBUG
#ifdef  DEBUG 
//需要调试的代码
#endif

2.把变量和表达式转换成字符串

在调试程序的过程中,往往需要输出一些变量和表达式的值,常规的方法可以这样实现:

cout<<"i="<<i<<endl;
cout<<"a+b="<<a+b<<end;

下述方法可能使代码更简洁:

1 #include <iostream>
2 #define PR(E) cout<<#E<<E<<endl
3 using namespace std;
4 int main(void)
5 {
6      PR(i);
7      PR(a+b);
8      return 0;
9 }

3.C语言的assert()宏

assert()是c语言中定义的一个调试宏,在C中的头文件是 ,C++中的头文件是

当使用assert()时,给它传递一个参数,该参数是一个表示某个断言为真的表达式。预处理器会产生代码去判断这个断言的真假。如果断言为假,则发出一个错误信息告诉断言是什么并且终止程序

//#define NDEBUG
#include<cassert>
int main()
{
        int i=100;
        assert(i!=100);
}

允许结果:

调试技巧

如果调试结束,可以在assert()宏前面插入#define NDEBUG 结束调试

原文链接: https://www.cnblogs.com/liujiangyi/archive/2012/08/08/2627875.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/58498

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午8:41
下一篇 2023年2月9日 上午8:42

相关推荐