#c #unix #cpp #linux
В многопоточной программе какой-то поток выполняет недопустимую операцию и ядро присылает сигнал SEGMENTATION FAULT. Я хочу посмотреть стек этого потока на момент выполнения недопустимой операции. Подскажите, пожалуйста, каким образом это можно сделать. Я подозреваю, в обработчике сигнала можно что-то сделать, но вот что? В принципе можно получить идентификатор потока при помощи функции pthread_self() и каким-нить образом достать стек этого потка...
Ответы
Ответ 1
А какие у вас ограничения? Вы не можете воспользоваться gdb? что-то типа $ulimit -c unlimited $./your_prog $gdb -c core ./your_prog gdb> bt или вообще посмотреть прямо в gdb где все падает?Ответ 2
После запуска gdb набираем : gdb> thread apply all bt full Получаем стек выполнения для каждого запущенного потока плюс указание на то, в какой функции все завалилось.
Комментариев нет:
Отправить комментарий