在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. Unity C# Sting.Format的学习

    String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. String.Format (String, Obj ...

  2. Java 类型转换String,List,Map,Array

    1. JsonString转为Map String jsoNStr = "{\n" + "\t\"TestArray\": [\"1\&qu ...

  3. android中AudioRecord使用

    一 什么是音频的采样率和采样大小 自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码.即PCM编码.PCM通过抽样.量化.编码三个步骤将连续变化的模拟信号转换为数字编码. 抽样:在 ...

  4. 用简单的方法学习ES6

    ES6 简要概览 这里是ES6 简要概览.本文大量参考了ES6特性代码仓库,请允许我感谢其作者@Luke Hoban的卓越贡献,也感谢@Axel Rauschmayer所作的[优秀书籍]//explo ...

  5. Browser History

    History 对象中包含用户(在浏览器窗口中)访问过的URL History 对象是window对象的一部分,可通过window.history属性对其进行访问. 注释:没有应用于History对象 ...

  6. ubuntu下virtualbox的卸载

    本想在ubuntu下virtualbox,可惜出错了,需要卸载后再安装,只能百度拼凑后再安装: 1.首先是执行删除命令:sudo apt-get remove virtualbox*( 这样就不用去查 ...

  7. 原生css3作响应式布局

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. 开发Maven插件

    Mojo: Maven plain Old Java Object 1.插件命名规则:maven-<yourplugin>-plugin是Maven的保留字段,不允许使用,我们可以用< ...

  9. Linux文件的三个时间属性(Atime,Mtime,Ctime)

    Linux下,一个文件有三种时间,分别是: 访问时间:atime 修改时间:mtime 状态时间:ctime 访问时间:对文件进行一次读操作,它的访问时间就会改变.例如像:cat.more等操作,但是 ...

  10. SQL Server DBA SQL

    . 监控事例的等待 ,,)) "Prev", ,,)) "Curr",count(*) "Tot" from v$session_Wait ...