Идеи для отладки и решения очень спорадического сбоя - кажется, AV - PullRequest
2 голосов
/ 19 сентября 2009

У меня где-то есть ошибка, из-за которой мое приложение просто исчезает без сообщения об ошибке или чего-то в этом роде. Приложение просто исчезает с экрана и больше не отображается в диспетчере задач.

Приложение является приложением C ++ Builder (CBuilder2007), и я попробовал все, что у меня возникло, чтобы попытаться поймать эту ошибку. Это происходит очень-очень редко, никогда не падало на моей машине и только один раз на тестовых машинах, которые есть у нас в офисе. С одним из наших клиентов это происходит немного чаще, но мы не нашли способ сделать это или найти обстоятельства, где это происходит. Это тяжелое многопоточное приложение.

Я включил madExcept в этом приложении, но он ничего не ловит. Я уже добавил обработчики, использующие подпрограммы set_terminate и set_unexpected RTL, но безуспешно.

Единственная информация, которую я имею, получена из обертки «приложения-загрузчика», чтобы получить код возврата из основного приложения. Он завершается с кодом C0000005, что, по-моему, означает нарушение прав доступа. Странно то, что, как уже упоминалось, нет даже окна ошибки Windows или чего-то подобного.

Вопрос будет: есть идеи, чтобы попытаться поймать это? Поскольку я даже понятия не имею, где это может происходить (у меня много журналов вокруг приложения, но «след» до падения приложения ни к чему не привел), моя идея с set_terminate и set_unexpected Подпрограммы должны были получить трассировку стека, чтобы попытаться увидеть, где была сгенерирована ошибка, но пока эти подпрограммы вообще не вызываются (по крайней мере, единственный раз, когда это происходило здесь, в моем офисе)

Заранее спасибо


[Обновление 22.Sept.2009] Используя AddVectoredHandlerException, я смог получить колл-стэк от сбоя, и теперь я могу начать пытаться изолировать и исправить ошибку. Спасибо !!!

Ответы [ 11 ]

0 голосов
/ 19 сентября 2009

В прошлом я видел еще две вещи, которые вы могли бы рассмотреть: переполнение стека (бесконечная рекурсия, неправильные параметры, вызывающие размещение больших временных переменных в стеке и т. Д.), Или необработанное исключение во вторичном объекте. нить.

...