Python и clang: оператор try … except не работает из-за ошибки сегментации (сброс ядра)

#python #segmentation-fault #clang

#питон #сегментация-ошибка #лязг

Вопрос:

Я использую libclang в Python для создания AST некоторого исходного кода. Возникает segmentation fault(core dumped) ошибка для нескольких файлов. Затем я пробую выполнить команду в терминале clang -fmodules -fsyntax-only -Xclang -ast-dump file . Ошибка тоже возникает. Я полагаю, что клэнг разбился. (Я не знаю почему, если вы знаете, как это решить, пожалуйста, скажите мне). Потому что только несколько файлов вызывают эту ошибку. Я хочу проигнорировать их и использовать оператор try …except в python, но этот оператор не работает, эта ошибка все еще возникает, и выполнение кода прерывается напрямую вместо запуска кода except . Как я могу удалить исходный файл, который вызывает ошибку, и продолжить создание AST для других файлов?

Ответ №1:

segmentation fault (core dumped) означает, что интерпретатор python полностью остановился (вероятно, из-за ошибки в libclang). try...except не поймаю этого.

Лучше всего создать отчет об ошибке для libclang и прикрепить файл, который вызывает ошибку.

Единственный другой вариант — запустить libclang в отдельном процессе для каждого файла и игнорировать любые результаты, если процесс завершается.