Я использую g++ на Solaris. Есть ли какой-либо внутренний или внешний способ узнать, какой размер стека я использовал до сих пор во время вызова функции? Это необходимо для диагностики предполагаемого переполнения стека.
Запрос размера стека времени выполнения в Solaris с использованием C++
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
Как установить условную точку останова на конец стека (внутри gdb)?
- person Dr. Debasish Jana; 20.06.2017
DTractToolkit имеет размер стека.d. Это может быть стоит посмотреть.
person
Paul Floyd
schedule
19.06.2017