Запрос размера стека времени выполнения в Solaris с использованием C++

Я использую g++ на Solaris. Есть ли какой-либо внутренний или внешний способ узнать, какой размер стека я использовал до сих пор во время вызова функции? Это необходимо для диагностики предполагаемого переполнения стека.


person Dr. Debasish Jana    schedule 19.06.2017    source источник
comment
связанный/обман: stackoverflow.com/questions/2275550/   -  person NathanOliver    schedule 19.06.2017
comment
@NathanOliver Я хотел бы знать, сколько я израсходовал с точки зрения размера стека, пока не максимальный предел   -  person Dr. Debasish Jana    schedule 19.06.2017


Ответы (2)


статический анализ: запросите у компилятора/компоновщика статический анализ, если размер стека вашего приложения (проверьте параметр компилятора -fstack-usage).

динамический анализ/подход: используйте отладчик и установите условную точку останова (доступ для записи) в конец вашего стека. Если приложение записывает в конец стека, отладчик остановится и представит вам стек вызовов и функцию, которая приводит к нарушению памяти.

person tom    schedule 19.06.2017
comment
Как установить условную точку останова на конец стека (внутри gdb)? - person Dr. Debasish Jana; 20.06.2017

DTractToolkit имеет размер стека.d. Это может быть стоит посмотреть.

person Paul Floyd    schedule 19.06.2017