LINUX.ORG.RU

Словить сегфолт в C-ном модуле, используемом в Python


0

0

Как сабж?

Есть модуль (из пакета pymedia), написанный на C. При определенных обстоятельствах он падает с сегфолтом. Интепретатор при этом молча падает.

Есть ли возможность этот сегфолт перехватить из питона?

★★★★★

Re: Словить сегфолт в C-ном модуле, используемом в Python

Из Питона - нет. Можно написать свой модуль, перехватывающий SIGSEGV. Правда, непонятно - что с этим сигналом делать.

Кстати, корка от упавшего интерпретатора вполне поддается обычному анализу gdb.

tailgunner ★★★★★ ()

Re: Словить сегфолт в C-ном модуле, используемом в Python

> Из Питона - нет. Можно написать свой модуль, перехватывающий SIGSEGV. Правда, непонятно - что с этим сигналом делать.

Я видел разок мощную прогу (правда, конечно, не на питоне), которая из обработчиков SIG{SEGV,BUS,ILL} делала longjmp в начало тела "главного цикла обработки".

Зато она никогда не коркалась, да...

anonymous ()

Re: Словить сегфолт в C-ном модуле, используемом в Python

просто запусти интерпретатор под дебаггером

после сегфолта зделай bt или что тебе будет по душе

cvv ★★★★★ ()

Re: Словить сегфолт в C-ном модуле, используемом в Python

смысла в этом нет. тк даже если ты перехватишь, работать после этого нормально она не будет. сегфолт для того и придумали чтоб ты знал об ошибках в коде. gdb/valgrind в руки и вперёд.

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