Почему отладчик VS2010 не останавливается на моих контрольных точках?

Я работаю над проектом библиотеки классов .NET С# в VS2010. В настройках моего проекта → параметры отладки у меня есть проект, чтобы запустить внешнюю программу (C:\Windows\SysWOW64\wscript.exe), которая запускает очень простой файл jscript (test.js). script просто создает экземпляр класса и вызывает один из его методов.

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

Ответ 1

Чтобы решить эту проблему, создайте файл конфигурации для приложения, которое использует компонент для отладки со следующими данными:

<?xml version="1.0"?>
<configuration>
  <startup>
     <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

С помощью этого файла вы указываете отладчику использовать правильную версию среды выполнения для отладки (кажется, что отладчик использует версию 4.0 по умолчанию).

Ответ 2

Моей первой проверкой было бы отключить "Just My Code"

  • Инструменты → Параметры
  • Debugger
  • Снимите флажок "Включить только мой код"

Повторите попытку.

Ответ 3

У меня есть целый день, чтобы узнать, почему я не мог отлаживать консольное приложение visual studio 2012, и ответ был неловким.

Я запускал его в режиме "RELEASE".

Иногда очевидное трудно найти.

Ответ 4

Закройте среду разработки Visual Studio и откройте ее. Теперь это сработает. Для меня это также касается той же проблемы. Я использовал этот способ для преодоления

Ответ 5

У меня был проект "Rebuilt" VS2013, который я не мог отлаживать (без символов). Наконец, я увидел, что оптимизация была проверена (Project- > Properties- > Build). Я снял флажок и перестроил. Символы загружены окончательно. Мои два цента, используйте (компилируйте) Оптимизацию, когда это абсолютно необходимо.

Ответ 6

Хотя я не могу ответить, почему это происходит, я могу предоставить вам обходной путь.

  1. Включите

    using System.Diagnostics;
    
  2. В самом начале вашего кода (например, конструктор класса) разместите следующие строки:

    #if (DEBUG)
                    while(!Debugger.IsAttached);
                    Debugger.Break();
    #endif
    
  3. Начните отладку.

  4. Инструменты меню → Присоединить к процессу
  5. Присоединиться к своему процессу.

точка останова должна срабатывать в вашем коде. Другие точки останова также должны срабатывать.

Ответ 7

Может быть несколько причин. Обычно это происходит потому, что вы пытаетесь отлаживать неправильную версию.

Эти действия работают примерно в 80% случаев.

  • Получить последний код
  • Clean
  • Перестроить
  • Перезапустить IIS
  • Повторите попытку

Если ничего хорошего, перейдите в раздел "Отладка" > "Windows" > "Модули", и если соответствующая DLL существует, щелкните правой кнопкой мыши и загрузите символы.

Если это не в списке, попробуйте запустить код в любом случае. Иногда, даже если он говорит, что точка останова не будет удалена, это только потому, что dll не загружается, пока вы не введете сценарий, который ему нужен. Попробуйте сценарий, который зависит от DLL, и он может просто попасть в точку останова.

Еще одна идея, перезапустите браузер. У вас может быть что-то кэшированное из старой DLL.

Ответ 8

Если причина неверна. Версия среды выполнения .NET (которая была моей проблемой), вместо создания файла конфигурации вы можете просто выбрать правильную версию в диалоговом окне Присоединить к процессу.

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

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

Ответ 9

Для меня это было исправлено:

  • Откройте свойства проекта VS2010

  • Перейти к компиляции → Расширенные параметры компиляции

  • Измените "Генерировать информацию отладки" от "Нет" до "Полный"

Ответ 10

Проблема может заключаться в том, что ваш браузер использует кешированную версию страницы, с которой вы работаете. Попробуйте добавить лишний запрос в свою адресную строку браузера f.x. добавить? NONSENSE = 1234 Это заставляет браузер использовать новую версию веб-страницы, поскольку она не знает, должна ли страница выглядеть иначе с этим Query в конце. В следующий раз используйте? NONSENS = 1235.

Ответ 11

У меня была проблема с неустановленными точками останова в моем родном коде С++. Причина в том, что я редактировал код, поэтому некоторые строки заканчиваются в коде не \r\n. Это невозможно было увидеть в коде, если вы не искали \r\n. После вставки правильных концов линии\отладчик работал.

Ответ 12

Я столкнулся с подобной проблемой, но ее в проекте CLR. У меня был некоторый старый синтаксис С++ в проекте CLR. Для меня после того, как я включил "Использовать режим совместимой совместимости" в "Инструменты" > "Параметры" > "Отладка" > "Общие", он начал попадать в точки останова.