最近笔者在调试pahomqtt连接加密网站时,总是看不到mbedtls内部日志,查找一番最后可以显示日志,方法如下。
在调用mbedtls初始化的地方,添加代码
//debug log
mbedtls_ssl_conf_dbg(&net->ctx->conf, SslDebug, NULL);
mbedtls_platform_set_printf(PlatformDebug);
定义两个日志打印函数:
static void SslDebug(void *ctx, int level, const char *file, int line, const char *str)
{
Log(TRACE_PROTOCOL, -1, "ssllog=== %s:%04d: %s.", file, line, str);
}
#define DEBUG_BUF_SIZE 512
static int PlatformDebug(const char *format, ...)
{
va_list argp;
char str[DEBUG_BUF_SIZE];
va_start(argp, format);
int ret = vsnprintf(str, DEBUG_BUF_SIZE, format, argp);
va_end(argp);
if (ret < 0) {
Log(TRACE_PROTOCOL, -1, "platformlog=== vsnprintf failed");
return -1;
}
Log(TRACE_PROTOCOL, -1, "platformlog=== %s", str);
return 0;
}
这里Log()为日志打印函数。
修改mbedtls中的源文件:
mbedtls/library/debug.c
static int debug_threshold = 10;
这里改一个大一点的值,否则日志出不来。