wow-debug文件说明

wow-debug文件说明

  • 项目地址:https://gitee.com/wow-iot/wow-iot7
  • 本文件的的功能为输出打印信息,目前架构debug信息按照模块名称进行区别使用,且支持打印级别设置;
  • 加入shell指令,可通过debug XXX on/off 来实时开启或者关闭模块的打印信息;

debug接口

//建议用户标注APP-进程名称—模块名称样式
void wow_debug(const char *mod,DebugLevel_E lev,const char *format, ...);
#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_DEBUG)
	#define ModDebug_D(mod,...)   wow_debug(mod,DEBUG_LEVEL_DEBUG,__VA_ARGS__);
#else
	#define ModDebug_D(mod,...)
#endif

#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_INFO)
	#define ModDebug_I(mod,...)   wow_debug(mod,DEBUG_LEVEL_INFO,__VA_ARGS__);
#else
	#define ModDebug_I(mod,...)
#endif

#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_WARN)
	#define ModDebug_W(mod,...)   wow_debug(mod,DEBUG_LEVEL_WARN,__VA_ARGS__);
#else
	#define ModDebug_W(mod,...)
#endif

#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_ERROR)
	#define ModDebug_E(mod,...)   wow_debug(mod,DEBUG_LEVEL_ERROR,__VA_ARGS__);
#else
	#define ModDebug_E(mod,...)
#endif

debug接口实现

void wow_debug(const char *mod,DebugLevel_E lev,const char *format, ...)
{
	CHECK_RET_VOID(wow_debug_getStatus((const void*)mod));

	va_list ap;
	char *str = NULL;;
	char buf[DEBUG_BUF_SIZE] = {0};

	va_start(ap, format);
	vasprintf(&str, format, ap);
	va_end(ap); 

	int size = snprintf(buf,DEBUG_BUF_SIZE-1,"[%s][%s]:%s",mod,debug_level_str[lev],str);

#if WOW_SHELL_TTY_SUPPORT
	_wow_shell_tty_write(buf,size);
#endif

#if WOW_SHELL_ETH_SUPPORT
	_wow_shell_eth_write(buf,size);
#endif		

	free(str);
}

shell接口实现

 int shell_debug(int argc, char *argv[])
{
	char modbuf[MAX_NAME_SIZE] = {0};
	char cmdbuf[8]  = {0};

	CHECK_RET_VAL(argc == 3, -1);
	memset(modbuf,0,sizeof(modbuf));
	strncpy(modbuf,argv[1],MIN2(strlen(argv[1]),MAX_NAME_SIZE-1));

	memset(cmdbuf,0,sizeof(cmdbuf));
	strncpy(cmdbuf,argv[2],7);
	if(!strncmp(cmdbuf,"on",2)){
		wow_debug_setStatus(modbuf,1);
	}
	else if(!strncmp(cmdbuf,"off",3)){	
		wow_debug_setStatus(modbuf,0);
	}
	else{
		return -1;
	}
	return 0;
}


#define DEBUG_INFO "debug XXX on/off  (XXX is the module name)"
WOW_DECLARE_SHELL_IN("debug" ,shell_debug,DEBUG_INFO);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/601716.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全面升级!一套基于Spring Boot 3+JDK17的实战项目!

最近把mall项目升级支持了Spring Boot 3JDK17,今天就来介绍下mall项目做了哪些升级,包括依赖的升级、框架的用法升级以及运行部署的改动,目前Spring Boot 3版本代码在mall项目的dev-v3分支下,希望对大家有所帮助! mall…

压力测试-JMeter常用插件、服务器硬件监控

1.写在前面 在前一篇文章中,我们已经对jmeter有了一个入门的学习。 掌握了JMeter安装、入门、结果分析等内容,详情可查看这里:压力测试-JMeter安装、入门、结果分析 对于jmeter默认的插件,往往不太够,例如&#xff…

Python检查代码质量库之flake8使用详解

概要 Flake8是一个流行的Python库,用于检查代码质量和风格一致性,它集成了PyFlakes、pep8、Ned Batchelder的McCabe script等工具。Flake8可以帮助开发者发现代码中的错误,保持代码风格的一致性,是每个Python开发者工具箱中的重要组成部分。 安装 安装Flake8非常简单,可…

手把手教数据结构与算法:有序线性表设计(表合并)

个人主页: 想转码的电筒人 专栏: 手把手教数据结构与算法 文章目录 有序线性表 概念 结构 问题描述 输入 输出 样例 解题步骤 结点类 链表类 insert函数 printAll函数 merge函数 test函数 完整代码 有序线性表 概念 单链表是一种物…

《构建高效的财务管理系统:设计与实现》

在当今数字化时代,企业财务管理系统的设计与实现至关重要。一个高效的财务管理系统不仅能够提高企业的运营效率,还能够增强企业的竞争力,为企业的发展提供有力支持。本文将探讨财务管理系统的设计与实现,为企业打造一套符合自身需…

WEB应用防火墙:构建稳固的网络防线

随着互联网的飞速发展,WEB应用已成为企业对外展示形象、提供服务的重要窗口。然而,随之而来的是日益严峻的网络安全威胁,如跨站脚本攻击(XSS)、SQL注入、恶意文件上传等。为了保障WEB应用的安全,构建一套高…

AI智能分析赋能EasyCVR视频汇聚平台,为安全生产监管提供保障

一、背景需求 为提升公共及生产安全监管,深入贯彻落实中央关于智慧城市、数字乡村的部署要求,视频设备融合管理已成为视频治理的必然趋势。针对当前部分地区在视频监控系统建设中存在的问题,如重点地区视频监控系统建设零散、视频监控数据孤…

普通人适合做大模型吗?过程中会发生什么潜在的挑战?

对于普通人来说,直接进行大模型的研发和训练可能存在一定的挑战,因为这通常需要以下资源和知识: 专业知识: 大模型的开发需要深入理解机器学习、深度学习、神经网络等领域的知识。 计算资源: 大模型的训练需要高性能的…

数组元素翻倍C++

编写一个 C 程序&#xff0c;实现一个功能&#xff0c;即将数组中的每个元素值翻倍。程序应定义一个函数 doubleArray&#xff0c;该函数接收一个整数数组的指针和数组的大小&#xff0c;然后将数组中的每个元素都翻倍。 代码 #include <iostream>void doubleArray(int…

JSON++介绍

1.简介 JSON 是一个轻量级的 JSON 解析库&#xff0c;它是 JSON&#xff08;JavaScript Object Notation&#xff09;的一个超集。整个代码由一个单独的头文件json.hpp组成&#xff0c;没有库&#xff0c;没有子项目&#xff0c;没有依赖项&#xff0c;没有复杂的构建系统&…

安防视频/视频汇聚系统EasyCVR视频融合云平台助力智能化酒店安防体系的搭建

一、背景需求 2024年“五一”假期&#xff0c;全国文化和旅游市场总体平稳有序。文化和旅游部6日发布数据显示&#xff0c;据文化和旅游部数据中心测算&#xff0c;全国国内旅游出游合计2.95亿人次。“五一”假期县域市场酒店预订订单同比增长68%&#xff0c;而酒店作为一个高…

js原生手写一个拖拽小功能

先上效果图 附上代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthd…

check startup检查各种资源文件

check startup 命令功能 check startup命令用来检查各种资源文件&#xff08;paf文件、补丁包、启动软件、配置文件&#xff09;是否正确。 命令格式 check startup [ crc ] [ next ] 参数说明 参数参数说明取值 crc 对资源文件进行CRC校验。 - next 检查下一次启动的各…

Git系列:Git Switch 高效使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

用标准的GNU/Linux命令替换Alpine上的精简版命令

Alpine Linux 是一个基于 musl libc 和 busybox 的轻量级Linux发行版&#xff0c;busybox 实现了很多常用类Unix命令的精简版&#xff0c;特点是体积很小&#xff0c;舍弃了很多不常用参数&#xff0c;我们简单对比一下标准Linux自带的 date 命令 和 Alpine下默认的 date 命令便…

Golang | Leetcode Golang题解之第76题最小覆盖子串

题目&#xff1a; 题解&#xff1a; func minWindow(s string, t string) string {ori, cnt : map[byte]int{}, map[byte]int{}for i : 0; i < len(t); i {ori[t[i]]}sLen : len(s)len : math.MaxInt32ansL, ansR : -1, -1check : func() bool {for k, v : range ori {if c…

每日两题 / 138. 随机链表的复制 148. 排序链表(LeetCode热题100)

138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 用哈希表记录原链表中的节点是否被复制过 遍历原链表并通过哈希表维护新链表 /* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val _val;next NULL;rand…

Glowroot:Java应用的性能守护神,让监控变得既轻松又有趣!

Glowroot&#xff1a;Java应用的性能守护神&#xff0c;让监控变得既轻松又有趣&#xff01; 在这个快节奏的数字化时代&#xff0c;作为一名开发者&#xff0c;你是否曾因应用性能问题而夜不能寐&#xff1f;是不是常幻想有个超级英雄能在关键时刻挺身而出&#xff0c;帮你揪…

淘宝优惠券领取软件草柴返利APP想从淘宝粘贴提示怎么关闭?想从天猫粘贴、想从京东粘贴弹窗提示关闭

使用iPhone苹果手机想从淘宝点击分享复制链接&#xff0c;到草柴APP查询该商品内部大额隐藏优惠券和返利。可是&#xff0c;苹果iPhone手机每次将复制的商品链接&#xff0c;粘贴到草柴APP时都是提示&#xff1a;“草柴”想从“淘宝”粘贴&#xff0c;每次都需要点击允许粘贴后…

docker搭建代码审计平台sonarqube

docker搭建代码审计平台sonarqube 一、代码审计关注的质量指标二、静态分析技术分类三、sonarqube流程四、快速搭建sonarqube五、sonarqube scanner的安装和使用 一、代码审计关注的质量指标 代码坏味道 代码规范技术债评估 bug和漏洞代码重复度单测与集成 测试用例数量覆盖率…
最新文章