Итак, после некоторых недавних изменений мы обнаружили, что одно из наших самых старых приложений иногда терпит крах при завершении работы. Это проявляется либо в форме сообщений "Ошибка выполнения 216", либо в сообщении из отчета об ошибках Windows, что приложение перестало работать. Приложение уже выпускает OutputDebugString
-массы на каждом шагу, а AFAICT весь наш собственный код правильно выполняется для завершения. Все деструкторы вызываются так же, как и все секции финализации и деструкторы класса, ни одна из которых не создает каких-либо исключений.
Кроме того, ни для madExcept, ни для FastMM4 Full Debug Mode, похоже, есть что-то, на что можно жаловаться (хотя это может быть ложным завершением, потому что авария может произойти даже до того, как будет запущен собственный код завершения этих компонентов).
Итак, что бы вы сделали? С чего бы вы начали?
Этот вопрос должен быть больше об общем подходе к этому классу проблем, чем о конкретном экземпляре, с которым я сейчас сталкиваюсь, поэтому я намеренно не учитываю детали. Не стесняйтесь спросить, думаете ли вы, что они могут иметь отношение к выбору подхода отладки, и я добавлю их позже.