Я использую Google Breakpad для отчетов о сбоях приложения C ++ на Mac и Windows. На обеих платформах Breakpad работает, регистрируя обработчик для необработанных исключений. Этот обработчик вызывается большинством всего, что обычно приводит к сбою процесса, например, разыменование нулевого указателя.
Но теперь у меня есть сценарий, когда обработчик не вызывается, и процесс падает к репортеру аварийного завершения работы ОС. Он воспроизводится на 100%, но я не могу отладить его, потому что присоединение отладчика к процессу освобождает обработчик необработанных исключений.
Какие методы (кроме обильных printfs) могут помочь мне отследить, куда идет поток кода, если не мой обработчик? Я думаю, что я хотел бы, чтобы некоторые настройки IDE позволили моему отладчику (Visual Studio и / или Xcode) пройти мимо разыменования нулевого указателя в код обработчика среды выполнения C ++. Но другие методы также приветствуются.
У меня есть минимальное воспроизведение моего проблемного сценария здесь: https://bugreports.qt.io/browse/QTBUG-50061
Задача ещё не решена.
Других решений пока нет …