如何在ESP32跟踪堆内存泄漏问题?



我正在使用ESP32芯片开发一个项目,但我发现堆大小似乎在稳步减少。我使用了:

MDF_LOGD("the free heap size is %d --root_write_task(start)", esp_get_minimum_free_heap_size());

检查主程序中的每个功能,但仍然找不到任何泄漏点,IDF APP Tracer似乎根本不工作。基本上我没有输出。

我很担心,我已经克隆了一些驱动程序到我的程序,造成了这个问题。有没有其他方法来检查这个问题?我正在使用带有esp-idf扩展的VSCode。

获取堆大小的正确函数是esp_get_free_heap_size()。检查内存泄漏的最佳方法是将您的设备与JTAG连接并以这种方式调试它。

这里有一些很好的资源可以帮助你。

内存管理- FreeRTOS

掌握FreeRTOS实时内核

堆内存调试- pressif

最新更新