Мне нужно выполнить анализ требований к памяти одной библиотеки, написанной на C++, потому что инженеры HW должны получить представление о требованиях к памяти нашего оборудования, над которыми работают. Я могу измерить пик кучи, я могу measure stack size, но я не знаю, как оценить/измерить data segment size и размер Bss. Есть ли какой-либо метод в Visual Studio или GCC? Я предполагаю, что он будет отличаться от компилятора к компилятору и от платформы к платформе, но оценка подходит для меня.Как получить размер сегмента данных в C++
1
A
ответ
1
Во время сборки:
Для VC++ запустить
link.exe /map
.Для GCC run
ld -Map
.
Оба варианта генерируют файл карты, который будет содержать размеры сегмента.
3
Утилита size
. . для проекта ARM MCU это может быть что-то вроде:
arm-none-eabi-size --format=sysv "program_name.elf"
Пример вывода:
program_name.elf :
section size addr
.text 14516 0
.data 160 268435456
.bss 1328 268435616
.stack 2528 268436944
.debug_aranges 2384 0
.debug_info 40951 0
.debug_abbrev 8870 0
.debug_line 27790 0
.debug_frame 6664 0
.debug_str 42157 0
.debug_loc 7074 0
.debug_macinfo 426030 0
.ARM.attributes 47 0
.debug_ranges 1760 0
.comment 96 0
.debug_macro 9236 0
Total 591591
2
Вы можете использовать objdump
, чтобы получить размер текста, данных и сегментов bss в системах Linux. Вы можете просмотреть выходные данные для разделов .bss
и .text
.
Для получения более подробного объяснения см. here.
Смежные вопросы
- 1. Размер сегмента сегмента JDK7
- 2. C идентификации сегмента данных
- 3. Ошибка ошибки сегмента сегмента C++
- 4. Кто вычисляет размер сегмента данных программы?
- 5. Размер сегмента кода 8086
- 6. Оптимальный размер сегмента TCP
- 7. Как получить первый адрес сегмента инициализированных данных
- 8. Размер сегмента сегмента Oracle Temp - выбор запроса непоследовательный
- 9. UISegmentedControl размер сегмента сенсорное обнаружение
- 10. Максимальный размер сегмента Java Socket
- 11. Нарушение сегмента в C
- 12. Как настроить/уменьшить размер сегмента tcp
- 13. Размер сегмента в реальном режиме x86
- 14. Получить идентификатор сегмента/полилинии
- 15. Неоднозначное поведение .bss сегмента в программе C
- 16. C Переполнение сегмента структуры
- 17. Как увеличить размер сегмента пирога при наведении курсора в d3
- 18. iText - размер шрифта и семейство текстового сегмента
- 19. C# получить тип данных и размер столбца
- 20. Получить значение динамического сегмента
- 21. Как получить значение сегмента uri в CodeIgniter
- 22. Поиск ошибки сегмента в C
- 23. Использование сегмента данных
- 24. Фрагмент кода, чтобы найти размер сегмента кучи или сегмента сегмента для программы
- 25. Ошибка сегмента асинхронного C++
- 26. Что касается сегмента bss и сегмента данных в Unix
- 27. Как получить адрес конца сегмента данных для вызова brk
- 28. Получить размер структуры в C#
- 29. Получить размер указателя в C
- 30. Преобразование сегмента кода из C++ в C#
Вы пытались перекрестно скомпилировать свою целевую платформу и проверить созданные двоичные файлы? – harald
Для этого GCC (pedantically, GNU binutils) имеет инструмент под названием ['size'] (http://linux.die.net/man/1/size). –
Я могу перекрестно скомпилировать его для ARM в IAR Workbench. Вы имеете в виду, что должно быть возможно обнаружить это из этого IDE/инструмента как-нибудь? – qub1n