Как я могу получить сбой функции C в iOS iOS - PullRequest
1 голос
/ 06 ноября 2019

Обычно мы используем NSSetUncaughtExceptionHandler или signal, чтобы поймать сбой Objective-C, но я считаю, что он не может поймать сбой функции C. Так, как я могу поймать падение функции C?

1 Ответ

1 голос
/ 11 ноября 2019

Перехват событий сбоя на платформах Apple не прост. signal может использоваться для захвата многих типов событий, но есть некоторые виды завершений, которые будут пропущены при использовании только сигналов. Средство исключений Маха (не путать с исключениями времени выполнения) можно использовать для захвата большего количества типов событий. Технически, NSSetUncaughtExceptionHandler не фиксирует сбои, а только детали необученных исключений Objective-C. Он не захватывает необработанные исключения C ++, даже несмотря на то, что под капотом исключения ObjC строятся поверх C ++.

К сожалению, вы действительно не можете полагаться только на одну систему. Я обнаружил, что сигнальные возможности POSIX на платформах Apple проблематичны. Но из-за некоторых ограничений в работе исключений Mach использование обоих обеспечит вам наибольшее покрытие.

Теперь функции C на самом деле не являются особыми или отличными от методов ObjC. Если вы пропускаете сбой, это, вероятно, связано с природой самого сбоя или с тем, как вы управляете процессом. Мне нужно увидеть детали обоих, чтобы дать вам лучшую информацию. Если вы можете, пожалуйста, обновите свой вопрос с более подробной информацией.

Возможно, вас также заинтересует проект с открытым исходным кодом, над которым я работаю, который специально разработан для того, чтобы стать ядром системы отчетов о сбоях. Не стесняйтесь обращаться к коду и / или попробовать его. https://github.com/ChimeHQ/Impact

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...