Я работаю над Ubuntu 11.04. Как узнать максимальный размер стека вызовов процесса, а также размер каждого кадра стека?
Как найти максимальный размер стека?
Ответ 1
Вы можете запросить максимальный размер процесса и стека с помощью getrlimit
. Рамки стека не имеют фиксированного размера; это зависит от того, сколько локальных данных (т.е. локальных переменных) требуется для каждого фрейма.
Чтобы сделать это в командной строке, вы можете использовать ulimit.
Если вы хотите прочитать эти значения для выполняющегося процесса, я не знаю ни одного инструмента, который делает это, но достаточно легко запросить файловую систему /proc:
cat /proc/<pid>/limits
Ответ 2
Быстрый поиск в Google должен показывать некоторую информацию по этому вопросу.
> ulimit -a # shows the current stack size
Ответ 3
Максимальный размер стека в килобайтах:
ulimit -s
Ответ 4
Вы можете использовать getrlimit
, чтобы увидеть размер стека и setrlimit
, чтобы изменить его.
Вот пример в Увеличение размера стека в Linux с сообщением setrlimit.