Debug调试文件
在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调试文件的更多相关文章
- Visual Studio Code 配置C、C++ 文件debug调试环境
目录 vscode C/C++ Extension Pack 插件安装 vscode windows 端 debug 配置 window MinGW 环境安装 windows 端 C.CPP 单文件 ...
- (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译
Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...
- eclipse如何debug调试jdk源码(任何源码)并显示局部变量
最近要看struts2源码 仿照了一下查看jdk源码的方式 首先你要有strtus2的jar包和源码,在struts官网上下载时,选择full版本,里面会有src也就是源码了. jar导入项目,保证可 ...
- MR单元测试以及DeBug调试
Hadoop的MapReduce程序提交到集群环境中运行,出问题时定位非常麻烦,有时需要一遍遍修改代码和打印日志来排查问题,哪怕是比较小的问题.如果数据量很大的话调试起来就相当耗费时间. 而且,Map ...
- 如何在Eclipse中Debug调试Java代码
背景 有的时候你想debug调试Java的源代码,就想试图在Java源代码中设置断点,在Eclipse中常常会出现Unable to insert breakpoint Absent Line Num ...
- Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)
前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量 ...
- Android 开发之使用Eclipse Debug调试详解(转)
转自 http://blog.csdn.net/xys289187120/article/details/6636331 1.在程序中添加一个断点 如果所示:在Eclipse中添加了一个程序断点 在E ...
- idea DeBug调试学习
在Intellij IDEA中使用Debug 目录 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中 ...
- 关于debug.keystore文件用法以及错误处理
在开发过程中需要频繁的为测试的同事签名apk,非常很麻烦,把默认debug.keystore文件替换成发布用(生产环境)的签名文件,不用频繁地签名apk文件了. 如果直接使用生产keysto ...
随机推荐
- Vue小贴士
1.去掉空格影响,删除掉此段代码 2.想要同时运行两个Vue项目,修改端口号,黄色框内的内容自己随意改个端口号就行,比如:8082 3.批处理 在项目的根目录中添加a.bat文件,这样就可以在运行的 ...
- 1 误删dbf文件造成ORA-01109: 数据库未打开.
1.cmd-sqlplus /nolog-conn system/pwd as sysdba 2.shutdown immediate; 3.startup mount; 4.alter databa ...
- 第6章 传输层(详解TCP的三次握手与四次挥手)
第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...
- HttpURLConnection(http 1.1) 用法、状态码、状态描述
最近研究了java的HttpURLConnection的用法, 这里简单的做一下记录: Java中可以使用HttpURLConnection来请求WEB资源. 1. URL请求的类别 分为二类,GET ...
- rmtree函数
blog.csdn.net/my2010sam/article/details/8956353
- cesium加载shp格式数据
方法一: shp格式转换为GeoJson格式并加载 首先注意shp的坐标系,要转换为WGS84,使用arcgis或QGIS 工具:http://mapshaper.org/: 注意:export时,输 ...
- 新建snmp模型总结
1.在DeviceType.xml中添加新的模块 2.在modellidx.json中添加路径关联 3.添加定义模型 4.定义model.xml注意: 5.定义collect.xml注意:
- JS encodeURIComponent函数
为了避免歧义,可以用JS 的encodeURIComponent函数 将有歧义的字符(?+=等)转换成对应的ASCII编码 for(var i=0;i<whichform.elements.l ...
- 使用bouncycastle进行DESede/DESeee/AES128/AES192/AES256的加解密
前言 默认的jdk不支持DESeee的算法,本地化的JDK中配置有拦截规则,可以通过使用bouncycastle的jar包中的DESEngine类来进行DESeee算法的运算. DES的8字节加解密 ...
- python_31_集合
# 集合是一个无序的,不重复的数据组合,它的主要作用如下: # 去重,把一个列表变成集合,就自动去重了 # 关系测试,测试两组数据之前的交集.差集.并集等关系 s = set([3, 5, 9, 10 ...