内存跟踪功能的作用
内存跟踪功能可以帮助开发者监控和调试应用程序中的内存使用情况
项目配置
打开配置文件(sdkconfig)
CONFIG_MEDIA_PROTOCOL_LIB_ENABLE=y
CONFIG_MEDIA_LIB_MEM_AUTO_TRACE=y
CONFIG_MEDIA_LIB_MEM_TRACE_DEPTH=3
CONFIG_MEDIA_LIB_MEM_TRACE_NUM=1024
CONFIG_MEDIA_LIB_MEM_TRACE_MODULE=y
CONFIG_MEDIA_LIB_MEM_TRACE_LEAKAGE=y
或者SDK配置编辑器
头文件引用
#include "media_lib_adapter.h"
#include "audio_mem.h"
初始化
在mian函数的调用media_lib_add_default_adapter()初始化内存跟踪模块
media_lib_add_default_adapter();
内存信息打印
audio_mem_print("Audio Mem", __LINE__, __FUNCTION__);
下面代码是内存打印结果
I (1326) Audio Mem2: Func:Task, Line:167, MEM Total:2016704 Bytes, Inter:83027 Bytes, Dram:83027 Bytes, Dram largest free:31744Bytes
停止内存跟踪
media_lib_stop_mem_trace();
简单示例代码(伪代码)
// 初始化内存跟踪
void init_memory_tracking()
{
esp_err_t ret = media_lib_add_default_adapter();
if (ret != ESP_OK) {
ESP_LOGE(TAG, "Failed to initialize default adapters.");
}
}
// 停止内存跟踪
void stop_memory_tracking()
{
media_lib_stop_mem_trace();
}
int main()
{
init_memory_tracking();
// 以下是你的应用逻辑
void *ptr = audio_malloc(100); // 分配内存
// 使用内存...
audio_free(ptr); // 释放内存
// 打印当前的内存使用情况
audio_mem_print("Audio Mem", __LINE__, __FUNCTION__);
// 停止内存跟踪
stop_memory_tracking();
return 0;
}