Отладчик останавливается, когда нет точки останова VS2010

Недавно я изменил один из параметров в отладчике, и я думаю, что именно это и вызывает эту проблему, но я не могу, кажется, "отменить" ее... Я гуглю и все хиты возвращаются с противоположным "почему отладчик не остановиться на точке останова

в любом случае, может кто-то пролить свет?

РЕДАКТИРОВАТЬ: когда я нажимаю f5 в режиме отладки. Каждый раз. Заходит в Program.cs и останавливается на

Application.SetCompatibleTextRenderingDefault(false);

в Main()

4 ответа

Старый поток я знаю, но я только что столкнулся с той же проблемой. Все, что я сделал, - это "Удалить все точки останова" (Ctrl+Shift+F9 для меня), затем "Очистить" моего запускаемого проекта, затем "Перестройка" и "Выполнить". После этого он перестал ломаться там, где не было точек останова.

Я только что столкнулся с той же проблемой, но моя не из-за изменения опции. Я думаю, что нашел причину, почему, но нет решения, чтобы это исправить. У меня есть решение с несколькими проектами, проекты включают в себя:

  • Бизнес Логика
  • Доступ к данным
  • Консольное приложение

И в BL, и в DA у меня есть класс с именем Credit.cs. Оба класса находятся в разных пространствах имен.

Когда я устанавливаю точку останова на строке 235 в BL.Credit.cs, тогда отладчик останавливается на строке 236 в DA.Credit.cs, даже если не установлено никаких точек останова. Я думаю, что это ошибка в Visual Studio.

Когда я удаляю точку останова в BL, впоследствии она также не останавливается в DA.

Я отправил сообщение об ошибке, если вы хотите проголосовать https://connect.microsoft.com/VisualStudio/feedback/details/699804/debugger-stops-on-same-line-in-different-class-where-there-is-no-breakpoint

Вот обходной путь для поведения точек останова, активирующихся в каждом классе, имеющем одно и то же имя, даже если полностью определенные имена отличаются. После установки точки останова перейдите в окно "Точки останова" ("Отладка | Windows | Точки останова", если оно еще не установлено). Щелкните правой кнопкой мыши точку останова, которая запускает слишком много классов с одинаковыми именами (например, разрывы Project2.Action, когда вы только хотели, чтобы Project1.Action имела точку останова) и выберите "Условие". Установите значение условия примерно так: this.GetType().FullName == "Project1.Action".

После этого условие делает так, чтобы выполнение прерывалось только на классе с правильным полностью определенным именем.

Останавливается ли это, давая вам исключение, или просто полностью останавливает выполнение вашего приложения? Если в вашем коде нет UnHandledExceptionHandler, может показаться, что он просто останавливается, но у вас действительно есть исключение.

ОБНОВЛЕНИЕ: Вот как должен выглядеть ваш метод Main для захвата необработанных исключений, так как try/catch не всегда работает.

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
    {
        throw new NotImplementedException();
    }

    static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        // You should/MAY see an error right here.
        throw new NotImplementedException();
    }
Другие вопросы по тегам