具有高日志级别的 dpdk mbuf 和 mempool 消息
dpdk mbuf and mempool messages with high log level
是否有任何线索,如何在 DPDK 中启用所有 mempool、mbuf 调试。我正在使用 DPDK 2.2.0.,我发现一些 answers 对这个版本没有太大帮助。
您可以查看 DPDK 源代码,rte_log.h,查看 RTE_LOG 的定义。
你可以
1) define RTE_LOG_LEVEL in Makefile, or
2) define RTE_LOG_LEVEL in rte_log.h before RTE_LOG, e.g.
#define RTE_LOG_LEVEL 8
那么所有的低级调试信息都将是日志文件,如果你愿意,你也可以将这个宏重新定义为打印到控制台。
在DPDK中,log也是由rte_logs.type控制的,需要查看这个值,每个模块一个位,请看rte_log.hRTE_LOGTYPE_XXX.
如果上述方法不起作用,请尝试以下方法
#define RTE_LOG_LEVEL 8
#define RTE_LOG(l, t, ...) \
(void)((RTE_LOG_ ## l <= RTE_LOG_LEVEL) ? \
rte_log(RTE_LOG_ ## l, \
RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__) : \
0)
在eal_common_log.c
int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
{
ret = printf(format, ap);
return ret;
}
重新编译整个DPDK,查看是否有日志产生。如果这个工作,然后 chnage rte_vlog 回来,只需检查上面提到的输出文件名和全局变量。
是否有任何线索,如何在 DPDK 中启用所有 mempool、mbuf 调试。我正在使用 DPDK 2.2.0.,我发现一些 answers 对这个版本没有太大帮助。
您可以查看 DPDK 源代码,rte_log.h,查看 RTE_LOG 的定义。
你可以
1) define RTE_LOG_LEVEL in Makefile, or
2) define RTE_LOG_LEVEL in rte_log.h before RTE_LOG, e.g.
#define RTE_LOG_LEVEL 8
那么所有的低级调试信息都将是日志文件,如果你愿意,你也可以将这个宏重新定义为打印到控制台。
在DPDK中,log也是由rte_logs.type控制的,需要查看这个值,每个模块一个位,请看rte_log.hRTE_LOGTYPE_XXX.
如果上述方法不起作用,请尝试以下方法
#define RTE_LOG_LEVEL 8
#define RTE_LOG(l, t, ...) \
(void)((RTE_LOG_ ## l <= RTE_LOG_LEVEL) ? \
rte_log(RTE_LOG_ ## l, \
RTE_LOGTYPE_ ## t, # t ": " __VA_ARGS__) : \
0)
在eal_common_log.c
int rte_vlog(uint32_t level, uint32_t logtype, const char *format, va_list ap)
{
ret = printf(format, ap);
return ret;
}
重新编译整个DPDK,查看是否有日志产生。如果这个工作,然后 chnage rte_vlog 回来,只需检查上面提到的输出文件名和全局变量。