Как отладить программу, когда она падает без исключения? - PullRequest
9 голосов
/ 25 сентября 2010

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

Ответы [ 3 ]

8 голосов
/ 25 сентября 2010

Предположительно, вы запускаете его из Visual Studio, и по какой-то причине он не останавливается в отладчике с неперехваченным исключением, и в этом случае вы можете попытаться поймать сбой извне Visual Studio.См. Мой ответ на System.AccessViolationException из неуправляемого кода? , в частности , как перехватить аварийный дамп .

Если он происходит только периодически, но в течение достаточно короткого промежутка временипериод времени, начинающийся с Sysinternals procdump .Запустите свой исполняемый файл из-за пределов Visual Studio, затем запустите:

procdump -e <YourExecutableNameOrPid>

и подождите, пока он соберет аварийный дамп - при условии, что он завершится из-за необработанного исключения - затем загрузите аварийный дамп в VS 2010 или WinDbg.

4 голосов
/ 25 сентября 2010

Программа просто неожиданно завершает работу

определенно убедитесь, что ваш код или одна из используемых вами библиотек не вызывает exit () (да, это может звучать слишком просто, но мы однажды потеряли часы, отслеживая завершение работы случайных программ обратно на вызов exit () ..). Если это так, поставьте точку останова или измените на throw (), затем снова запустите. Если нет, то ответ Шона кажется правдоподобным.

1 голос
/ 27 сентября 2010

Дополнительные предложения вы можете найти в следующем аналогичном сообщении: Сторонняя программа dll аварийно завершает работу без исключения .

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