ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从测试角度写代码(一)调试分级

2020-06-17 11:02:00  阅读:250  来源: 互联网

标签:info log 代码 分级 级别 调试


从测试角度写代码(一)调试分级

一.为什么要使用调试分级

调试分级并不是一定要做的,需要根据具体情况进行分析,比如我们在使用开发小型代码时,是完全不需要使用调试分级的,反而会给我们带来了代码编写的复杂性。调试分级一般用于大型项目开发中,可以快速定位代码问题,提高编程效率,以下场景都是可以使用调试分级进行优化的选项。

  • 当我们进行大型项目开发时基本都是按阶段性开发进行的,当我们调试完一阶段代码之后,如果需要继续调试开发下一段代码时,需要将上一段代码的打印信息全部屏蔽。
  • 上一个场景尽管有同学说我们可以开发下一阶段任务前,利用编译器的查找替换将上阶段的代码的printf全部替换//printf进行快速注释,但是如果我们需要输出的代码既有需要显示的业务代码,又有需要开发时的调试方法。直接使用替换功能将调试信息注释掉同时也会将显示信息注释。
  • 在项目发布上线的头天,进行最后的代码测试时,如果调试打印出现了错误信息,但是这个信息并不紧急,为了不影响发布日期,我们完全如期上线项目,在后期使用补丁或者更新的方法进行代码修饰。但如果没有代码分级的情况下,在大型项目中测试打印出非常多信息的情况下,如何快速得到错误严不严重呢。

二.调试分级层次

  • 以上问题都可以通过手动修改printf进行改变,但是这种方法在使用时,即繁琐又低效,而且一步步修改也容易出错,自己写一个小的demo代码还好,具体代码实施时,还是使用分级调试的思想比较快捷。

  • 我认为调试分级参照日志的做法,大致的分为以下四个级别:

    • ERROR级别:这种级别优先级最高,表示运行功能的过程中表示代码已经发生了错误,比如文件读写出错,内存访问出错,需要进行修正。这种问题需要立即解决。
    • WARNING级别:这种级别优先级其次,表示代码能够正常运行,但是可能存在潜在问题,这种问题在也需要进行解决,但是如果项目紧急,完全可以先根据警告信息进行一个判断。当错误信息不会影响到整个项目的功能运行,我们先将产品发布,后期通过更新和补丁进行修复。比如现在很多手机厂商在发布会上需要发布新的操作系统,尽管系统中还存在一些小的DEBUG,但是就目前而言,这些小bug基本不会影响到用户体验,这时我们为了保证如期发布,可以使用先上线,后修复的策略。
    • DEBUG级别:这种级别属于程序调试级别,在程序开发时,提供一个调试级别给程序员们做一个信息调试,获取出程序员员所需要的调试信息。在项目发布后,需要屏蔽掉这一级别显示信息。
    • INFO级别:这种级别属于正常输出级别,系统通过正常的打印出业务信息与用户进行交互,我们需要展显出来的菜单信息就是这一层。
  • 实现调试分级的方法

    • 利用不同的宏定义不同的调试等级,下面代码定义出了两种级别,一个正常的信息交互info_log,一个用于调试debug_log。我们调试代码可以使用debug_log代替printf,正常的交互信息可以用info_log代替printf。具体实现代码如下:

      #define DEBUG_PRINT 1
      
      #if(1 == DEBUG_PRINT)
      #define debug_log printf
      #else
      #define debug_log
      #endif
      
      #define INFO_PRINT 1
      
      #if(1 == INFO_PRINT)
      #define info_log printf
      #else
      #define info_log
      #endif
      
      #include <stdio.h>
      #include <stdlib.h>
      
      int main(void)
      {
      	char *info_messages = NULL;
      
      	info_log("you scanf messages is %s\n", info_messages);
      
      	while(1)
      	{
      		info_messages = (char*)malloc(sizeof(int)*10000);
      		if(NULL == info_messages)
      		{
      			debug_log("no enough memory\n");
      			break;
      		}
      
      	}
      	return 0;
      }
      
    • 程序输出

      • 将info_log的宏置为1,debug_log的宏置为0,只显示正常交互信息

        在这里插入图片描述

      • 将info_log的宏置为0,debug_log的宏置为1,只显示调试信息

        在这里插入图片描述

标签:info,log,代码,分级,级别,调试
来源: https://blog.csdn.net/MOSHIWANGJUE/article/details/106784399

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有