在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. Cocos2d-x v3.1 坐标系统(五)

    Cocos2d-x v3.1 坐标系统(五) 为了能够更好的布局以及了解对象所在的位置,我们必须对Cocos2d-x中的坐标有详细的了解,本篇文章主要就是了解Cocos中用到的坐标系统.学过数学的人都 ...

  2. 软件License设计

    如何保护软件版权,最常用的办法就是设计一套license验证框架. 1.我们的常规需求如下: .可以限制软件只能在一台机器上使用: 目前很多软件都是一机一码的销售,软件换一台机器则不能使用,想要几台机 ...

  3. JavaWeb中五种转发方式(转)

    今天本来是想找一下在jsp中实现转发的方式的,无意中看到了一篇文章,然后稍微综合了把服务器端的转发也包括在内.   1. RequestDispatcher.forward() 是在服务器端起作用,当 ...

  4. 腾讯云服务器手动和自动安装WordPress网站程序

    如果我们需要建站的话,对于基础个人网站.博客建站选择基础的1Mbps带宽配置的1GB内存的腾讯云服务器还是够用的,且如果我们需要用来建网站的话可以手工添加程序,以及有些面板,比如宝塔面板是自带CMS程 ...

  5. java Vamei快速教程11 对象引用

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们之前一直在使用“对象”这个概念,但没有探讨对象在内存中的具体存储方式.这方面的 ...

  6. 汶川大地震中的SAP成都研究院

    5·12汶川地震,发生于北京时间(UTC+8)2008年5月12日(星期一)14时28分04秒,此次地震的面波震级 里氏震级达8.0Ms.矩震级达8.3Mw,地震烈度达到11度.地震波及大半个中国及亚 ...

  7. NYOJ-255-C小加 之 随机数

    原题链接 C小加 之 随机数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 ACM队的“C小加”同学想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用 ...

  8. IOS 图形上下文栈

    - (void)drawRect:(CGRect)rect { // 获取上下文 CGContextRef ctx = UIGraphicsGetCurrentContext(); // 保存一份最纯 ...

  9. POJ-1936 All in All---字符串水题

    题目链接: https://vjudge.net/problem/POJ-1936 题目大意: 给两个字符串,判断是s1是不是s2的子序列 思路: 水 #include<iostream> ...

  10. C++中的异常安全性

    http://blog.csdn.net/bonchoix/article/details/8046727 一个函数如果说是“异常安全”的,必须同时满足以下两个条件:1.不泄漏任何资源:2.不允许破坏 ...