LINUX.ORG.RU

Собрать стеки со всех нитей процесса


0

1

Привет всем!

Я пытаюсь собрать stack traces для всех нитей процесса при SIGSEGV и прочих неприятностях, но есть 2 проблемы:
1. Функции backtrace получают стек текущей нити, а надо со всех. Есть ли аналогичные функции для этого случая?
2. Пытался взять адреса стеков с помощью pthread_attr_getstack (код здесь) чтобы потом как-нибудь обработать, функция возвращает NULL. Не могу понять почему, все делаю по манам.

Ну и вообще: кто как собирает стеки, не прибегая к коркам?

★★

Последнее исправление: BreadFan (всего исправлений: 1)

Если backtrace нормально работает с сигналами, то можно повесить backtrace на обработчик сигнала и послать всем нитям сигнал.

Murr ★★
()
Ответ на: комментарий от BreadFan

да, должен нормально работать, попробую, спасибо

А вот фиг там. То есть, в большинстве случаев конечно же работает, но вот здесь(в самом низу страницы) функции backtrace нет. Тут я вспоминаю случаи, когда при всяких SIGSEGV иногда(редко, но всё же) получал битый стек.

gogi
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.