[LWIP] 如何启LWIP用调试信息输出

主要在两个文件内配置opt.h和lwipopts.h。

第一步 启动调试项

cpp 复制代码
//LWIP调试选项
#define LWIP_DEBUG        LWIP_DBG_ON	 //LWIP_DBG_OFF关闭DEBUG选项 LWIP_DBG_ON

第二步 设置调试等级和类型

opt.h文件中

cpp 复制代码
 * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is
 * compared against this value. If it is smaller, then debugging
 * messages are written.
 * @see debugging_levels
 */
#if !defined LWIP_DBG_MIN_LEVEL || defined __DOXYGEN__
#define LWIP_DBG_MIN_LEVEL              LWIP_DBG_LEVEL_ALL
#endif

/**
 * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable
 * debug messages of certain types.
 * @see debugging_levels
 */
#if !defined LWIP_DBG_TYPES_ON || defined __DOXYGEN__
#define LWIP_DBG_TYPES_ON               LWIP_DBG_ON
#endif

LWIP_DBG_MIN_LEVEL 调试信息等级

LWIP_DBG_TYPES_ON 调试类型

调试等级LWIP_DBG_MIN_LEVEL有以下可定义

cpp 复制代码
 #define LWIP_DBG_LEVEL_ALL     0x00
/** Debug level: Warnings. bad checksums, dropped packets, ... */
#define LWIP_DBG_LEVEL_WARNING 0x01
/** Debug level: Serious. memory allocation failures, ... */
#define LWIP_DBG_LEVEL_SERIOUS 0x02
/** Debug level: Severe */
#define LWIP_DBG_LEVEL_SEVERE  0x03    

调试类型在 opt.h中定义开启比如将NETIF_DEBUG调试信息开启

cpp 复制代码
#if !defined NETIF_DEBUG || defined __DOXYGEN__
#define NETIF_DEBUG                     LWIP_DBG_ON
#endif      

第三步 定义输出信息函数

实现调试信息输出函数定义,一般是实现printf函数。

cpp 复制代码
#define LWIP_PLATFORM_DIAG(x)         do { printf x; } while(0)  // 需要实现printf

调试建议

在调试等级设置上,建议设置LWIP_DBG_LEVEL_WARNING及以上等级,如果设置ALL可能会有太多的输出信息难以查找问题。

关闭调试

只需将LWIP_DEBUG选项设置为关闭即可

cpp 复制代码
//LWIP调试选项
#define LWIP_DEBUG        LWIP_DBG_OFF  //LWIP_DBG_OFF关闭DEBUG选项 LWIP_DBG_ON
相关推荐
sramdram20 分钟前
国产32位CH32V系列RISC-V单片机
单片机·嵌入式硬件·risc-v·国产32位单片机·risc-v单片机
youcans_26 分钟前
【STM32C5教程】(4)GPIO 外部中断实验
stm32·单片机·嵌入式硬件·mcu·stm32c5
硅基手札1 小时前
【I2C 技术系列 09】I2C 传输模式:轮询 / 中断 / DMA
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
wuyk5553 小时前
样章-第10讲-看门狗异常恢复与卡机排查方法论
stm32·单片机·嵌入式硬件·重构
开发笔记-阿牛3 小时前
AM收音机蓝牙二合一设计复盘
人工智能·单片机·嵌入式硬件·音视频·音频
sunoo-2293 小时前
嵌入式Linux驱动学习笔记(第3-6天):从misc封装、platform总线到设备树、中断与单总线外设实战
linux·arm开发·驱动开发·笔记·单片机·学习
创界工坊工作室18 小时前
22-基于STM32的汽车防盗系统设计
stm32·单片机·嵌入式硬件·proteus
雨田言炎20 小时前
STM32之RCC系统时钟控制(芯片的心脏控制器)
stm32·单片机·嵌入式硬件
李永奉20 小时前
日常使用的锂电池上,新、旧锂电池的差异分析
单片机·嵌入式硬件·物联网·智能手机·电脑
额额额对了20 小时前
IMX6ULL 杂项设备 LED 驱动
stm32·单片机·嵌入式硬件