Указатель стека потоков

В Linux 2.6.32-32 есть способ найти следующую информацию о потоке программно в pthreads программа? Мне нужно: счетчик прогонов, указатель стека, начало / конец стека, размер стека, использование стека. Я думаю, что-то вроде ThreadX, но внутри программы. Благодарю.

2 ответа

Решение
  • pthread_getattr_np() должна дать вам атрибуты pthread потока
  • pthread_attr_getstack() возвращает адрес стека и размер
  • Я не знаю, что вы имеете в виду под счетом пробега.
  • Для указателя стека потока, отличного от текущего, вам может понадобиться использовать ptrace. Если у вас есть его, вы можете использовать его для вычисления, чтобы определить, сколько стека используется.

Для получения собственного указателя стека вы всегда можете сделать что-то вроде:

mword sp;
asm volatile ("mov %esp, $0" : "=r"(sp));

В качестве дополнения к ответу BjoernD вы можете получить количество переключений контекста и общее время выполнения, используя getrusage позвонить с RUSAGE_THREAD, Вы не можете получить информацию о необработанном количестве выполненных временных интервалов; эта информация не отслеживается в первую очередь.

Другие вопросы по тегам