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 ...
随机推荐
- HDU 5505——GT and numbers——————【素数】
GT and numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- SpringBoot | 第十二章:RabbitMQ的集成和使用
前言 上节讲了缓存数据库redis的使用,在实际工作中,一般上在系统或者应用间通信或者进行异步通知(登录后发送短信或者邮件等)时,都会使用消息队列进行解决此业务场景的解耦问题.这章节讲解下消息队列Ra ...
- javascript获取滚动条位置(兼容所有浏览器)
有两种方式来获取浏览器滚动条的位置 第一种:document.documentElement.scrollTop 第二种:$("body").scrollTop() 第一种方式能够 ...
- 创建有输出参数的存储过程并在c#中实现DataGridView分页功能
不足之处,欢迎指正! 创建有输出参数的存储过程 if exists(select * from sysobjects where name='usp_getPage1') drop procedure ...
- bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
答案来自老外http://stackoverflow.com/questions/14795035/twitter-bootstrap-modal-blocks-text-input-field $( ...
- WPF根据数据项获取条目控件的方法-ItemContainerGenerator
一.方法: ContainerFromIndex:返回 ItemCollection 中指定索引处的项的容器. ContainerFromItem:返回与制定的项对应的容器(ComboxItem等条目 ...
- 少写代码帮你模块化方法 & 运动框架 & 简化轮播图
模块化就是通过每一个js里封装一个方法:用exports将他输出, 在下一个js用require的方法加载js时就会将方法输出.然后在主页面引入require.js; 模块化基本写法: define( ...
- a href="javascript:"与a href="#"
<a href="javascript:;"></a> <a href="#"></a> 这两种写法.这两种写法 ...
- php之基础深入---类与对象篇
1.类的自动加载: spl_autoload_register()函数可以注册任意数量的自动加载器,当使用尚未被定义的类(class)和接口(interface)时自动去加载,这样可以避免includ ...
- 用TextKit实现表情混排
Textkit是iOS7新推出的类库,其实是在之前推出的CoreText上的封装,有了这个TextKit,以后不用再拿着CoreText来做累活了,根据苹果的说法,他们开发了两年多才完成,而且他们 ...