全志科技
直播中

芒果冰

12年用户 920经验值
私信 关注
[问答]

出现网络问题时怎样去打开LwIP调试信息呢

LwIP内部调试信息有几类呢?
出现网络问题时怎样去打开LwIP调试信息呢?

回帖(1)

陈俊

2021-12-29 15:56:02
LwIP 内部调试信息有两类:

(1) LWIP_DEBUG,可以显示协议栈内部各层运行流程,收发通路信息等。
(2) LWIP_STATS,可以显示协议栈内部各种资源使用情况,包括内存、队列、信号量等。
解决办法


(1) 打开 LWIP_DEBUG 的方式
文件 include/net/lwip-x.x.x/arch/cc.h 中使能 DEBUG:


/* Debug on/off */
#define LWIP_DEBUG


文件 include/net/lwip-2.0.3/lwipopts.h 中


设置调试等级,使能全局调试信息:


#define LWIP_DBG_MIN_LEVEL              LWIP_DBG_LEVEL_ALL
#define LWIP_DBG_TYPES_ON               LWIP_DBG_ON


根据需要打开相应类别的调试信息,如 socket 相关调试信息:


#define SOCKETS_DEBUG                   LWIP_DBG_ON


(2) 打开 LWIP_STATS 的方式
文件 include/net/lwip-2.0.3/lwipopts.h 中


使能 LWIP_STATS:


#define LWIP_STATS                     1
#define LWIP_STATS_DISPLAY             1


根据需要打开相应类别的统计信息(默认已打开),如协议栈堆内存使用信息:


#define MEM_STATS                       ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0))


最后自行调用相应统计函数,就可以显示当前协议栈统计信息:


LINK_STATS_DISPLAY();      // 链路层统计信息
ETHARP_STATS_DISPLAY();    // ARP层统计信息
IPFRAG_STATS_DISPLAY();    // IP层分片统计信息
IP_STATS_DISPLAY();        // IP层统计信息
IGMP_STATS_DISPLAY();      // IGMP协议统计信息
ICMP_STATS_DISPLAY();      // ICMP协议统计信息
UDP_STATS_DISPLAY();       // UDP层统计信息
TCP_STATS_DISPLAY();       // TCP层统计信息
MEM_STATS_DISPLAY();       // 堆内存使用统计信息
MEMP_STATS_DISPLAY(i);     // 内存池i的使用统计信息
SYS_STATS_DISPLAY();       // 系统统计信息,包括队列(mbox)、信号量、锁
stats_display();           // 打印上面所有信息
举报

更多回帖

发帖
×
20
完善资料,
赚取积分