C # программа внезапно завершает работу / вылетает, как ее сломать?

2

Итак, моя программа на С# прекращает/прерывает/закрывает/сбой внезапно даже в режиме отладки. Как я могу сделать это break/pause/stop, чтобы узнать, где его вызвали?

  • 1
    Кстати, это сильно характерно для кода, который дважды ломает стек. У вас есть какой-нибудь неуправляемый код, выполняющийся в вашем процессе, который может вызывать сбой последней страницы стека? У вас есть неограниченные рекурсии?
Теги:

6 ответов

5

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

3

Вы можете узнать больше, используя обработчик необработанных исключений. Однако, если вы находитесь в режиме отладки, вы можете увидеть его по умолчанию. Проверьте настройки "Отладка: Исключения", чтобы убедиться, что вы случайно не прекратили сообщать о них в режиме отладки.

3

Если вы находитесь в Visual Studio, вы можете включить "Остановить, когда генерируется исключение" - перейдите в Debug- > Exceptions. Это часто очень полезно для определения точного источника проблемы.

1

Кроме того, может оказаться целесообразным проверить ваш код на наличие Environment.FailFast, на случай, если кто-то попытается (слишком) умным.

1

как предложил Эрик, попытаться пройти через него... также всегда ставьте try/catch в свои приложения-конечные пользователи, чтобы управлять исключениями.

0

Вы можете нажать F10, чтобы начать отладку своего проекта. Это положит точку останова в начале вашего основного метода, после чего вы можете перейти оттуда через код с F11, чтобы увидеть, в каких точках он сработает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню