Статистика использования кучи IAR DLIB |
Добавил(а) microsin |
Куча (heap) описана в руководстве "IAR C/C++ Development Guide for ARM" [4], глава "Dynamic memory on the heap". Этот документ (Technical Note 28545 [1]) описывает, как собрать статистику по использованию кучи в приложении. Т. е. как отследить объем памяти, используемый malloc/new и подобными функциями, обслуживающими динамическую память. В среде разработки IAR Embedded Workbench for ARM версии 6.60 и более свежей Вы можете собрать статистику использования кучи с помощью вызова функции __iar_dlmallinfo(). Если Вы хотите просто вывести эту статистику в stderr, то вызовите функцию __iar_dlmalloc_stats(). Пример вывода __iar_dlmalloc_stats(): max system bytes = 2048 system bytes = 2048 in use bytes = 16 Функции __iar_dlmallinfo и __iar_dlmalloc_stats декларированы и определены в файлах arm\src\lib\dlib\heap\dlmalloc.c и arm\src\lib\dlib\heap\dlmalloc_stat.c. Для IAR Embedded Workbench for ARM версий до 8.10 эти файлы можно найти в папке arm\src\lib. Чтобы вызвать эти функции, используйте заголовочный файл mallocstats.h, который можно загрузить по ссылке [2]. В загруженном zip-архиве также находится код примера main_test.c, показывающий, как использовать вызовы функции. В статье [3] описывается, как определить оптимальный размер для кучи с помощью функций bymalloc_max_footprint, malloc_max_footprint и mallinfo. [Устаревшие версии IAR] Для IAR Embedded Workbench for ARM, у которых версии до 6.60, Вы должны подключить к проекту модуль arm\src\lib\dlmalloc.c, и установить определения NO_MALLINFO и NO_MALLOC_STATS в значение 0. Имейте в виду, что Вы должны сделать копию файла dlmalloc.c в каталог проекта, и затем подключать и модифицировать эту копию. Также имейте в виду, что в проекте C++ файл dlmalloc.c должен компилироваться как файл языка C. Примечание: в версии IAR 4.41 файл dlmalloc.c отсутствует. [Ссылки] 1. IAR DLIB Library heap usage statistics site:iar.com. |