在debug.h中设置g_debug_switch即可控制调试级别。

/* debug.c */
#include "debug.h" const char *get_log_levname(unsigned int loglevid)
{
if (DBG_TYPE_TRACE == loglevid)
{
return DBG_TYPE_TRACE_NAME;
}
else if (DBG_TYPE_INFO == loglevid)
{
return DBG_TYPE_INFO_NAME;
}
else if (DBG_TYPE_ERR == loglevid)
{
return DBG_TYPE_ERR_NAME;
}
else
{
return DBG_TYPE_UNKNOWN_NAME;
}
}
/*debug.h*/
#ifndef __DEBUG_H__
#define __DEBUG_H__ #ifdef __cplusplus
extern "C"
{
#endif
#include <syslog.h>
#include <stdarg.h> typedef int bool_t; /* 布尔量数据类型 */
#ifndef TRUE
#define TRUE ((bool_t)1)
#endif
#ifndef FALSE
#define FALSE ((bool_t)0)
#endif #define S_OK (0)
#define S_ERR (-1)
#define S_FAIL (-2)
#define S_TIMEOUT (-3) #ifndef MIN
#define MIN(x, y) ((x) < (y) ? (x) : (y))
#endif #ifndef MAX
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#endif /* 定义各个级别日志的简称 */
#define DBG_TYPE_TRACE_NAME "TRACE"; /* TRACE级别简称 */
#define DBG_TYPE_INFO_NAME "INFO"; /* 提示级别的简称*/
#define DBG_TYPE_ERR_NAME "ERR"; /* 一般级别的简称 */
#define DBG_TYPE_UNKNOWN_NAME "UNKNOWN"; /*未知的日志级别简称*/ //extern int g_debug_switch;
/* 打印级别宏,代码中遍历使用,请保持成顺序排列 */
#define DBG_TYPE_TRACE 1 /* TRACE级别 */
#define DBG_TYPE_INFO 2 /* 提示级别的信息 */
#define DBG_TYPE_ERR 3 /* 错误级别的信息 */
#define DBG_TYPE_OFF 0 #define DEBUG_SCREEN
#ifdef DEBUG_SCREEN
#define DBG_PRINT(tp, fmt, args...) \
do { \
if ( tp >= g_debug_switch ) \
{ fprintf(stderr,"[%s] %s(%d): " fmt, \
get_log_levname(tp), __FUNCTION__, __LINE__, ##args); \
} \
} \
while ()
#else
#define DBG_PRINT(tp, fmt, args...) \
do { \
FILE *logfp = fopen("/var/log/systemlog.txt", "a+"); \
if ( tp >= g_debug_switch ) \
{ fprintf(logfp,"[%s] %s(%d): " fmt, \
get_log_levname(tp), __FUNCTION__, __LINE__, ##args); \
} \
fclose(logfp); \
} \
while ()
#endif #ifdef __cplusplus
}
#endif #endif /* __DEBUG_H__ */

Debug调试文件的更多相关文章

  1. Visual Studio Code 配置C、C++ 文件debug调试环境

    目录 vscode C/C++ Extension Pack 插件安装 vscode windows 端 debug 配置 window MinGW 环境安装 windows 端 C.CPP 单文件 ...

  2. (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

    Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...

  3. eclipse如何debug调试jdk源码(任何源码)并显示局部变量

    最近要看struts2源码 仿照了一下查看jdk源码的方式 首先你要有strtus2的jar包和源码,在struts官网上下载时,选择full版本,里面会有src也就是源码了. jar导入项目,保证可 ...

  4. MR单元测试以及DeBug调试

    Hadoop的MapReduce程序提交到集群环境中运行,出问题时定位非常麻烦,有时需要一遍遍修改代码和打印日志来排查问题,哪怕是比较小的问题.如果数据量很大的话调试起来就相当耗费时间. 而且,Map ...

  5. 如何在Eclipse中Debug调试Java代码

    背景 有的时候你想debug调试Java的源代码,就想试图在Java源代码中设置断点,在Eclipse中常常会出现Unable to insert breakpoint Absent Line Num ...

  6. Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)

    前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量 ...

  7. Android 开发之使用Eclipse Debug调试详解(转)

    转自 http://blog.csdn.net/xys289187120/article/details/6636331 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在E ...

  8. idea DeBug调试学习

    在Intellij IDEA中使用Debug 目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中 ...

  9. 关于debug.keystore文件用法以及错误处理

    在开发过程中需要频繁的为测试的同事签名apk,非常很麻烦,把默认debug.keystore文件替换成发布用(生产环境)的签名文件,不用频繁地签名apk文件了.      如果直接使用生产keysto ...

随机推荐

  1. <llinux下kvm虚拟化>

    原理就是本来可能要10台物理机完成的事现在只要5台,分别在每台物理机上虚拟一台,这5太虚拟机共享一个stronge,比如有一台物理机down掉后或是要做维护,我们可以把它上面的虚拟机牵走,从而减少损失 ...

  2. html5 知识总结

    Meta基础知识:  H5页面窗口自动调整到设备宽度,并禁止用户缩放页面    //一.HTML页面结构<meta name="viewport" content=" ...

  3. 少写代码帮你模块化方法 & 运动框架 & 简化轮播图

    模块化就是通过每一个js里封装一个方法:用exports将他输出, 在下一个js用require的方法加载js时就会将方法输出.然后在主页面引入require.js; 模块化基本写法: define( ...

  4. [转]Jetson TX1 开发教程(1)配置与刷机

    开箱 Jetson TX1是英伟达公司新出的GPU开发板,拥有世界上先进的嵌入式视觉计算系统,提供高性能.新技术和极佳的开发平台.在进行配置和刷机工作之前,先来一张全家福: 可以看到,Jetson T ...

  5. 在window下, Java调用执行bat脚本

    参考博客: https://www.cnblogs.com/jing1617/p/6430141.html 最近一段时间用到了Java去执行window下的bat脚本, 这里简单记录一下: 我这里是先 ...

  6. linux 下源码编译环境配置

    yum install -y apr* autoconf automake bison bzip2 bzip2* compat* cpp curl curl-devel \ fontconfig fo ...

  7. spring中用xml配置构造注入的心得

    spring中用xml配置构造注入时,如果 <constructor-arg> 属性都是 ref ,则不用理会参数顺序 <constructor-arg ref="kill ...

  8. 实战:ADFS3.0单点登录系列-前置准备

    本文为本系列第二篇,主要分为两部分进行介绍, 一.网络拓扑 二.证书制作 还是将本系列目录贴出来,方便导航 实战:ADFS3.0单点登录系列-总览 实战:ADFS3.0单点登录系列-前置准备 实战:A ...

  9. 使用kubeadm搭建Kubernetes集群

    记录在石墨日记中,经常更新,懒得再复制了,直接点击下面链接查看吧 移步到此: https://shimo.im/docs/22WbxxQa1WUV9wsN/

  10. linux命令 ——目录

    开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令.学习的主要参考资料为: 1.<鸟哥的linux私房菜> 2.http://codingstan ...