Sto lavorando su Ubuntu 11.04. Come posso scoprire la dimensione massima dello stack di chiamata di un processo e anche la dimensione di ciascun frame dello stack?Come trovo la dimensione massima dello stack?
risposta
È possibile eseguire una query sulle dimensioni massime del processo e dello stack utilizzando getrlimit
. I frame di stack non hanno una dimensione fissa; dipende da quanti dati locali (cioè, variabili locali) hanno bisogno di ciascun frame.
Per eseguire questa operazione sulla riga di comando, è possibile utilizzare ulimit.
Se volete leggere questi valori per un processo in esecuzione, non so di qualsiasi strumento che fa questo, ma è abbastanza facile per interrogare il filesystem/proc:
cat /proc/<pid>/limits
È possibile utilizzare getrlimit
per vedere le dimensioni dello stack e setrlimit
per cambiarlo.
C'è un esempio nel post Increase stack size in Linux with setrlimit.
Non un comando in ubuntu come getrlimit – HMS
Una rapida ricerca su Google dovrebbe rivelare some information on this subject.
> ulimit -a # shows the current stack size
Ovviamente, una rapida ricerca su google ora serve questa pagina. – gerardw
massima dimensione dello stack in kilobyte:
ulimit -s
ho un comando non trovato errore. Quale pacchetto devo installare per questo comando? – Bruce
È una chiamata API C, non uno strumento da riga di comando. –
Hanno bisogno di avere alcune dimensioni iniziali giuste? Il compilatore calcola in anticipo la dimensione del frame dello stack (prendendo in considerazione tutte le variabili locali) e quindi assegna il frame? – Bruce