LINUX.ORG.RU

Использование стека программой

 ,


0

2

Как узнать какой максимальный размер стека использовала программа при запуске? Через strace или gdb есть такие возможности?

Меня интересует именно его максимальное значение при работе программы.

★★★

Последнее исправление: voltmod (всего исправлений: 1)
Ответ на: комментарий от voltmod

Это флаг для GCC и Clang, при компиляции будет создан .su файл, где будет подробно расписано какая функция на какую глубину залезла.

ASavonte
()

Можно узнать по количеству отображённых страниц стековой памяти. Стековая память выделяется ленивым образом при первом обращении.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от firkax

Тогда а что, если поставить какой-нибудь вотч или хук на rsp в gdb? Вроде как можно, но анализировать, конечно, потом это всё то ещё приключение)

Используют ещё такой метод: инициализируют память стека каким-то узнаваемым значением и после выполнения программы считают сколько значений «затёрто» в результате работы программы.

ASavonte
()
Ответ на: комментарий от ASavonte

Выше уже написали - по количеству выделенных страниц, они выделяются по мере надобности только. Правда точность получается +-4кб но думаю это не страшно.

firkax ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.