Измерение использования стека для многопоточного приложения Linux
Я не знаю хороших инструментов, но multithread в крайнем случае вы можете multi-threaded включить в свое приложение threads какой-нибудь код для проверки, примерно linux такой:
__thread void* stack_start;
__thread long stack_max_size = 0L;
void check_stack_size() {
// address of 'nowhere' approximates end of stack
char nowhere;
void* stack_end = (void*)&nowhere;
// may want to double check stack grows downward on your platform
long stack_size = (long)stack_start - (long)stack_end;
// update max_stack_size for this thread
if (stack_size > stack_max_size)
stack_max_size = stack_size;
}
Функцию check_stack_size() придется stacks вызывать в некоторых функциях, которые linux наиболее глубоко вложены.
Затем threading в качестве последнего оператора stacks в потоке вы можете вывести stacks stack_max_size куда-нибудь.
Переменная cross-threading stack_start должна быть инициализирована threading в начале вашего потока:
void thread_proc() {
char nowhere;
stack_start = (void*)&nowhere;
// do stuff including calls to check_stack_size()
// in deeply nested functions
// output stack_max_size here
}
linux
multithreading
stack
Измерение использования стека для многопоточного приложения Linux
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.