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.mzph.cn/news/833440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算有效声压

计算有效声压 clear all; %%----------------------------------------------读取文件------------------------------------------ % 从wav文件读入语音数据,该语音采样率16k,故信号最高频率8k。 [x,fs]audioread(C2_3_y.wav); % 取x的一个通道 xx(:,1)…

Google准备好了吗?OpenAI发布ChatGPT驱动搜索引擎|TodayAI

在科技界波澜壮阔的发展中,OpenAI正式宣布其最新突破——一个全新的基于ChatGPT技术的搜索引擎,旨在直接挑战谷歌在搜索领域的统治地位。这一创新将可能彻底改变用户上网搜索的方式。 据悉,这款AI驱动的搜索引擎利用了ChatGPT的强大功能&…

EasyExcel多行表头带动态下拉框导入导出具体实现

一、准备环境包 maven:<!-- guava本地缓存--> <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>32.1.2-jre</version> </dependency><!--easyexcel依赖--> <dependen…

免费SSL证书?轻松申请攻略来了!

在当今的互联网时代&#xff0c;网络安全已经成为一个不容忽视的重要课题。随着在线交流和交易活动的增加&#xff0c;保护网站和用户信息的重要性日益突显。SSL证书&#xff0c;即安全套接字层证书&#xff0c;它为互联网通信提供了加密服务&#xff0c;确保数据的安全性和完整…

淘宝扭蛋机小程序开发:转动幸运,开启无限惊喜

一、探索未知&#xff0c;开启全新扭蛋体验 淘宝扭蛋机小程序&#xff0c;为您带来一场前所未有的扭蛋盛宴。在这个充满神秘与乐趣的平台上&#xff0c;每一次点击都将引领您走进未知的宝藏世界&#xff0c;每一次旋转都可能揭示出意想不到的惊喜。 二、海量商品&#xff0c;…

Kubernetes 教程:在 Containerd 容器中使用 GPU

原文链接:Kubernetes 教程:在 Containerd 容器中使用 GPU 云原生实验室本文介绍了如何在使用 Containerd 作为运行时的 Kubernetes 集群中使用 GPU 资源。https://fuckcloudnative.io/posts/add-nvidia-gpu-support-to-k8s-with-containerd/ 前两天闹得沸沸扬扬的事件不知道…

3D 交互展示该怎么做?

在博维数孪&#xff08;Bowell&#xff09;平台制作3D交互展示的流程相对简单&#xff0c;主要分为以下几个步骤&#xff1a; 1、准备3D模型&#xff1a;首先&#xff0c;你需要有一个3D模型。如果你有3D建模的经验&#xff0c;可以使用3ds Max或Blender等软件自行创建。如果没…

护眼台灯十大品牌哪个好?热销榜护眼灯十大品牌推荐

护眼台灯十大品牌哪个好&#xff1f;在这篇文章中&#xff0c;我将向大家介绍十大护眼台灯品牌&#xff0c;其中包括书客、松下、飞利浦等知名品牌。我精心挑选这些品牌&#xff0c;旨在为大家提供明智的选择参考。这些品牌的护眼台灯拥有的功能比较多&#xff0c;提供的光线也…

揭秘软胶囊品质的秘密武器:西奥机电CHT-01软胶囊弹性硬度测试仪

揭秘软胶囊品质的秘密武器&#xff1a;西奥机电CHT-01软胶囊弹性硬度测试仪 在医药行业中&#xff0c;软胶囊作为一种常见的药品剂型&#xff0c;因其独特的封装方式和便利性而受到广泛青睐。然而&#xff0c;软胶囊的质量问题也一直是制药企业关注的焦点。为了确保软胶囊的质量…

Qt窗口及QWidget类详解

QtWidgets 模块及窗口基本概念 QWidget 类是所有用户界面对象的基类,QWidget 及其子类是开发桌面应用的核心,这些类都位于 QtWidgets 模块内,注意:QtWidgets 是模块,QWidget 是类(少一个字母 t 和最后的 s)。 部件或窗口部件:Qt 把建立用户界面的元素称为窗口部件(widg…

国际数字影像产业园专场招聘会暨四川城市职业学院双选会成功举办

为了进一步强化校企合作&#xff0c;链接企业与高素质人才&#xff0c;促进毕业生实现高质量就业&#xff0c;2024年5月7日&#xff0c;“成就梦想 职通未来”国际数字影像产业园专场招聘会暨四川城市职业学院2024届毕业生校园双选会成功举行。 当天&#xff0c;国际数字影像产…

Redis: windows安装使用、本地启动、客户端ARDM

https://www.cnblogs.com/xiaoniandexigua/p/17419288.html https://www.cnblogs.com/lal520/p/17981824 5款实用的Redis可视化工具-CSDN博客 AnotherRedisDesktopManager: Github国内镜像&#xff0c;供下载使用&#xff0c;有问题可移步到下面GitHub链接

全国首创!成都代表:国际数字影像产业园运营中

国际数字影像产业园&#xff0c;这座充满活力和创意的产业园区&#xff0c;以其独特的“数字影像文创”新型发展模式&#xff0c;正逐渐成为成都文创产业的标杆。它不仅仅是一个简单的成都文创产业园区&#xff0c;更是一个将数字影像、文化演艺、会展节庆、数字产业、艺术培训…

适用于 iPhone 的最佳数据恢复应用程序

意外删除了重要iPhone文件&#xff0c;或尝试从损坏的手机访问文件&#xff1f;我们收集了适用于 iPhone 的最佳数据恢复应用程序&#xff0c;这可能会扭转局面。 iPhone 数据恢复应用程序是一种您希望永远不需要的工具&#xff0c;但如果您需要的话&#xff0c;您一定会很高兴…

Kubernetes(K8S) — 生产环境

生产环境 生产质量的 Kubernetes 集群需要规划和准备。 如果你的 Kubernetes 集群是用来运行关键负载的&#xff0c;该集群必须被配置为弹性的&#xff08;Resilient&#xff09;。 生产环境考量 需要考虑的因数 可用性&#xff1a;一个单机的 Kubernetes 学习环境 具有单点…

Docker 中快速构建 Redis Cluster 集群

Docker 中快速构建 Redis Cluster 集群 目录 前言环境准备 所需软件配置网络 构建 Redis Cluster 镜像 创建自定义 Dockerfile构建镜像 启动 Redis 节点容器 启动命令 配置 Redis Cluster 集群 创建 Redis 集群验证集群状态 总结 前言 Redis 是一个高性能的键值对数据库&am…

GIS入门,不使用任何第三方库,纯JavaScript实现Catmull-Rom样条曲线(Spline Curve)插值算法,生成更加平滑连续的曲线

前言 本章介绍不使用任何第三方库,纯JavaScript实现样条曲线(Spline Curve)插值算法,生成更加平滑连续的曲线。 样条曲线(Spline Curve)插值算法比贝塞尔曲线生成的曲线更加平滑连续。 介绍 样条曲线(Spline Curve)是一种通过给定的控制点插值生成平滑曲线的方法。其…

什么是SFP光模块?如何选择SFP光模块?

SFP光模块是一种小型化、支持热拔插的光模块&#xff0c;用于光纤通信、数据通信和网络设备之间的传输。本文将从SFP光模块的概述、技术原理、外观组成、如何选择以太网SFP光模块以及SFP光模块的未来趋势等方面进行介绍&#xff0c;帮助读者更好地了解SFP光模块并正确选择适合自…

浏览器渲染

1 React JSX如何渲染&#xff1f; JSX 本身不能被浏览器直接识别和执行&#xff0c;因为它不是标准的 JavaScript 语法。 JSX 是一种语法扩展&#xff0c;它允许开发者在 JavaScript 中以类似HTML的语法编写UI结构。 使用编译器&#xff08;如Babel&#xff09;&#xff1a;B…

【编码利器 —— BaiduComate】

目录 1. 智能编码助手介绍 2. 场景需求 3. 功能体验 3.1指令功能 3.2插件用法 3.3知识用法 3.4自定义配置 4. 试用感受 5. AI编程应用 6.总结 智能编码助手是当下人工智能技术在编程领域的一项重要应用。Baidu Comate智能编码助手作为一款具有强大功能和智能特性的工…