Как проверить, в каких частях моей памяти находится куча, стек и т. Д.? В настоящее время я просматриваю программу на C, и, глядя на файл .elf, я могу видеть, какие адреса памяти используют программа, но я не знаю, находится ли она в куче или стеке.Распределение памяти в C
ответ
Это довольно сложно узнать из статического анализа самого скомпилированного кода. Вы должны иметь возможность видеть любые статические инициализированные области данных, а также статические неинициализированные (BSS) разделы, но точно, как они загружаются относительно стека, кучи и т. Д., До исполняемого загрузчика платформы.
Если вы работаете во встроенной платформе, вы, вероятно, должны использовать некоторые скрипты компоновщика (файлы lcf) вместе со зданием программы, тогда вы сможете подробно определить все разделы), его размещение в памяти (будь то в кеше L1, кеше L2 или DDR) и его начальном/конечном адресе при загрузке на плату.
Дело в том, что ознакомьтесь с руководством по компоновщику (вы можете найти его в каталоге установки компилятора) для правильного понимания ключевых слов в lcf.
Также есть еще один способ проанализировать разделы, вы можете создать «файл карты» для своего проекта и пройти через него. Он отобразит все разделы в программе и ее адресах.
Вы можете использовать ollydbg, что является бесплатным отладчиком. единственный недостаток этого - это показать все в форме сборки, но он покажет вам, что находится в вашем стеке, куче и даже том, что находится в ваших регистрах. Я не уверен, что это то, что вы ищете.
Поддерживает ли он все платформы? –
Я не знал вас, где в системе Unix, когда я это написал. Я извиняюсь. К сожалению, он работает только на Windows. но я полагаю, что большинство отладчиков/дизассемблеров делают по существу одно и то же, но это единственное, что я использовал раньше. –
- 1. Распределение памяти в C++
- 2. Распределение памяти в C
- 3. Распределение памяти в C++
- 4. Распределение памяти в C++
- 5. распределение памяти в C/C++
- 6. C распределение структура ++ памяти
- 7. Расширенное распределение памяти C
- 8. C# Распределение памяти массива
- 9. Динамическое распределение памяти, C++
- 10. Распределение памяти C (malloc)
- 11. C++ Распределение динамической памяти
- 12. c распределение памяти
- 13. C# распределение памяти
- 14. C++ «новое» распределение памяти
- 15. Динамическое распределение памяти C
- 16. распределение Уменьшения памяти C++
- 17. C++: Распределение памяти
- 18. C - Распределение динамической памяти
- 19. C динамическое распределение памяти
- 20. C++ Распределение памяти. Матрица
- 21. C: условное распределение памяти
- 22. Распределение памяти в программе C
- 23. динамическое распределение памяти в C
- 24. Распределение памяти в Objective-C
- 25. Статическое распределение памяти в C
- 26. Распределение памяти/выпуск в C
- 27. Указателя распределение памяти в C++
- 28. Распределение памяти в приложении C
- 29. Распределение памяти в STL C++
- 30. Распределение памяти в Objective C
Какую платформу вы используете точно? –