Почему отладчик не останавливается на точке останова в моем приложении ASP.NET? - PullRequest
40 голосов
/ 13 мая 2009

Я пытаюсь отладить большое приложение ASP.NET.

Я установил точку останова в первой строке в Page_Load в Default.aspx.cs.

Когда я запускаю приложение, моя точка останова на короткое время превращается в красный круглый контур с восклицательным знаком , затем снова превращается в обычную точку останова, затем приложение запускается без остановки на моем контрольная точка .

MSDN сообщает, что этот символ означает, что «точка останова не была загружена». Итак, как я могу получить точку останова для загрузки? Это работало пару недель назад. Какие вещи могут привести к тому, что точка останова «не будет загружена»?

Что я могу сделать, чтобы отладчик снова остановился на моих контрольных точках?

Добавление:

Я все еще не могу заставить отладку работать, нажав F5, но я могу запустить веб-сайт, затем выполнить отладку / присоединение к процессу, чтобы перейти в режим отладки. Если кто-то знает, почему это будет работать, но когда я нажму F5, это не будет работать (кнопки отладки даже не отображаются на F5), любые идеи будут приветствоваться.

Ответы [ 13 ]

46 голосов
/ 13 мая 2009

Попробуйте выполнить полную перестройку приложения. Обратите внимание, что он находится в конфигурации «Отладка».

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

17 голосов
/ 28 августа 2011

Люди .... Я нашел другое решение для точки останова. В окне «Присоединить к процессу» в Visual Studio 2010 с использованием Framework 3.5 по умолчанию автоматически определяются типы кода для отладки (v2.0, v1.1, v1.0) и (v4.0).

Visual Studio запутывается и автоматически определяет управляемый код 2.0 как иногда управляемый код 4.0.

В этом случае вам нужно нажать кнопку «Выбрать ...» в поле «Присоединить к» и выбрать «Управление» (v2.0, v1.1, v1.0).

Привет

6 голосов
/ 30 ноября 2011

VS проблема отладки с IE8

Поскольку это мой первый пост в блогах, я решил написать о проблеме, которая часто открывалась на официальном форуме ASP.NET, которая вызывает сбой отладчика VS в IE8.

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

Как мог сбой отладчика VS с IE8?

Если вы открыли несколько экземпляров IE8 и попытались отладить свой проект, у вас возникнет проблема, когда отладчик VS просто останавливается и игнорирует ваши точки останова!

Почему это было?

IE 8 имеет функцию, называемую слабосвязанным Internet Explorer (LCIE), в результате чего IE работает в нескольких процессах. http://www.microsoft.com/windows/internet-explorer/beta/readiness/developers-existing.aspx#lcie

Старые версии отладчика Visual Studio смущаются этим и не могут понять, как подключиться к правильному процессу.

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

1) Открыть RegEdit 2) Перейдите к HKEY_LOCALMACHINE -> ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ -> Microsoft -> Internet Explorer -> Main 3) Добавьте меч под этим ключом под названием TabProcGrowth 4) Установите TabProcGrowth на 0

Если вы столкнулись с той же проблемой в Vista или новее, вам также необходимо отключить защищенный режим.

А затем продолжайте отлаживать ваш код:)

4 голосов
/ 18 декабря 2009

Если вы используете Visual Studio 2005 и IE8, у меня может быть объяснение: в IE8 появилась новая функция, называемая слабосвязанной IE (LCIE), которая вызывает известные проблемы при отладке приложений ASP.NET VS2005. Посмотрите эту ветку на SO для получения более подробной информации и некоторых решений.

Оказалось, что все мои проблемы с отладкой исчезли, когда я закрыл все запущенные экземпляры IE8 до того, как начал отладочный запуск в своем проекте ASP.NET.

Другая причина, которую я публикую здесь, - поделиться блогом, который я нашел , в котором перечислено большое количество потенциальных решений проблемы "точки останова не работают". Это приятно, потому что в одном блоге перечислено большинство решений, которые я нашел, разбросанных по Интернету. Во всяком случае, автором блога является Джордж П. Александр; Я скопирую и вставлю здесь сочные части на случай, если что-то случится со статьей:

  1. Использование высокоточных ракет: удалите файлы .pdb в вашем объекте и Папки для мусора. Перекомпилируйте. Run.

  2. Carpet bomb all .dlls: Удалить и перезагрузить все упомянутые .dll (например, проекты вашего класса)

  3. Выпуск ОМУ: Если № 1 и № 2 не сработали, удалите содержимое самого папка obj и bin сама так все .pdbs и .dlls уничтожаются. Перезагрузите необходимые DLL-файлы и дайте выстрел.

  4. Магия VS.Net. Закройте VS.Net и перезапустите. Перестроить. Запустить. Да, это иногда работает.

  5. Магия Windows: выключите компьютер и перезагрузите компьютер. Перестроить. Запустить.

  6. Режим выполнения: Убедитесь, что режим выполнения VS.Net установлен на «Отладка», а не «Выпуск»

  7. Настройки Web.config: убедитесь, что тег «Компиляция» элемента XML находится в ваш файл web.config имеет атрибут с debug = "true". Только если это включены будут веб-приложения и сервисы иметь свои файлы .pdb, созданные с .dll

  8. Свойства проекта # 1: убедитесь, что Свойства проекта -> Отладка -> Включить «ASP.Net Debugging is true» или «Включить хостинг Visual Studio Процесс »(в зависимости от версии VS.Net вы используете).

  9. Свойства проекта # 2: Убедитесь, что Свойства проекта -> Свойства конфигурации -> Построить -> «Создать отладочную информацию» установить на «True».

  10. Неправильный процесс присоединен: ваш сеанс отладки может быть не прикреплен к правильному процессу. Возможно, вам придется шаг, чтобы вручную прикрепить процесс. Это возможно с веб Сервисы. Возможность прикрепить процесс находится в меню отладки.

  11. Отладка сценариев и неуправляемого кода: не удается отладить сценарии или неуправляемый код? Убедитесь, что проект Свойства -> Отладка -> «Включить ASP» Отладка "или" Включить неуправляемый Отладка "(в зависимости от вашей версии VS.Net) имеет значение true.

  12. @ Директива страницы # 1: убедитесь, что атрибут AutoEventWireup в вашем Директива @Page документа .aspx установлена в «истину».

  13. @ Директива страницы # 2: Убедитесь, что атрибут Debug в вашем .aspx директива @Page документа установлена ​​в "правда". Если вы не нашли атрибут, все в порядке. По умолчанию это правда.

  14. Жулик .DLLs: убедитесь, что у вас нет другого экземпляра .dll бег, который лежит еще где ваш предполагаемый путь проекта.

14.1 Жулик .dlls спящая ячейка № 1: Вы установили свой проект .dll в Папка GAC? Вы могли бы запустить Вместо этого .dll находится в вашей папке GAC из того, что в вашей папке бин. Удалить / удалить .dll из GAC и попробуйте еще раз.

14.2 Разбойная ячейка спящего .DLLs # 2:

C: \ Documents and Настройки [UserName] \ VSWebCache [машина Имя]:

Освободить ОМУ (# 3) на папках, которые связаны с вашим проектом.

14.3 Ячейка спящего DLL № 3: .dll из вашего проекта, которые лежат еще где, но вместо этого упоминаются в ваш проект. Вы можете узнать это путем изучения свойств проекта. В Короче говоря, VS.Net имеет в виду некоторые другие .dll, а не тот, который загружен в вашем среда разработки.

14.4 Rogue .DLLs спящая клетка № 4: Надеюсь, вам не придется играть с эта папка к тому времени, как вы закончите с указанными выше точками ...

Вводя C: \ WINDOWS \ Microsoft.NET \ Framework [.Net версия] \ Временные файлы ASP.NET \

Эта папка может содержать более старые версии .dll, хранящиеся в вашем Папка Windows, которая может получить ссылка при запуске из VS.Net. Если это произойдет, это отстой. Вы можете удалить столько папок и содержимого, сколько Вы можете ОТНОСИТЬСЯ К ВАШЕМУ ПРОЕКТУ. Могут быть блокировки только для чтения, которые вам нужно будет отключить, закрыв процессы. Это скорее последний рвотное усилие. Не делай этого, если ты никогда не играл с Windows папка. В большинстве случаев что-то сделано выше, прежде чем этот пункт обычно делает почини это. В идеале, вам не нужно прочитайте этот момент к тому времени, когда вы сделано с указанными выше указателями. И просто для записи, я не рекомендую Кто-нибудь, чтобы изучить этот вариант или играть вокруг с вашей папкой Windows, если вы не имеют докторскую степень по физике, Математика, Windows и .Net.

Другие советы:

  1. Окно модуля: окно модуля можно просматривать, пока ваше приложение работает из VS.Net (Debug -> Windows -> Модули). Все модули из ваш проект должен быть указан там. Если .dll вашего проекта в списке и статус Символы "Символы" Загружен ", у вас нет проблем.

Если это сообщение, относящееся к вашему .pdb файл, перейдите к «Выбрать символы» и соответствующий файл .pdb. Ты можешь иметь перезапустить отладку или загрузить VS.Net снова. Статус должен измениться на "Символы загружены".
2. Параметры VS.Net: Инструмент -> Параметры -> Отладка В VS.Net 2005 и далее существует еще один узел «Символы», где вы можете попросить VS.Net искать символы. Это может быть доступно через окно модуля при отладке тоже.

4 голосов
/ 13 мая 2009

Вы также можете попробовать следующее:

  1. Закройте решение и визуальную студию.
  2. Запустить iisreset / stop
  3. Удалите все в C: \ windows \ microsoft.net \ framework \ v2.0.50727 \ Временные файлы ASP.NET. Если у вас возникли проблемы с удалением некоторых из этих файлов, возможно, у вас установлена ​​версия Visual Studio или ее отладчик по-прежнему работает.
  4. Запустить iisreset / start
  5. Открыть решение в VS
  6. Установить отладку на
  7. Запустить Перестроить все на уровне решения
  8. Хит F5
3 голосов
/ 13 мая 2009

Вы установили <compilation debug="true"> в своем web.config?

2 голосов
/ 18 мая 2011

У меня была похожая проблема с неработающими точками останова, и в то же время в консоли IIS я не смог отредактировать конфигурацию для своего проекта, т. Е. Кнопка «Редактировать конфигурацию» была недоступна.

[Чтобы найти кнопку Изменить конфигурацию: Пуск | Все программы | Административные инструменты | Информационные службы Интернета, затем разверните необходимый компьютер, разверните веб-сайты, разверните веб-сайт по умолчанию, найдите и щелкните правой кнопкой мыши нужный проект, выберите «Свойства», а затем вкладку «ASP.Net».]

Я обнаружил, что в IIS версия ASP.Net для моего проекта была установлена ​​на 4.0.30319. Как только я установил значение 2.0.50727 , кнопка «Изменить конфигурацию» стала доступной (щелкаемой), и мои контрольные точки снова заработали.

Я также понял, что, возможно, стоит проверить установленную в IIS версию ASP.Net для «Веб-сайт по умолчанию» [в консоли IIS разверните Веб-сайты, щелкните правой кнопкой мыши Веб-сайт по умолчанию и выберите Свойства, затем вкладка ASP.Net], так что любые новые проекты, созданные в Visual Studio, приобретают настройки веб-сайта по умолчанию.

1 голос
/ 20 июня 2017

Всегда ищите Конфигурации решения , которые должны быть установлены как "Отладка" для отладки. После публикации может измениться на «Выпуск конфигурации».

1 голос
/ 18 октября 2013

Недавно я столкнулся с этой проблемой (WinXP, VS2003) и безуспешно перепробовал многие из приведенных выше решений. Затем я понял, что было установлено несколько версий среды выполнения .Net. Итак, я поднял IIS 5.1, нашел нужную виртуальную папку, зашел в свойства, затем на вкладку ASP.NET и изменил версию ASP.NET с 4.? до 1.1, и оказалось, что это решило проблему. Может быть, решение таково, ПЛЮС одна или несколько из вышеперечисленных вещей.

Кроме того, все вышеперечисленное составляет «кухонную раковину», которую можно попробовать. Это все равно, что бросать кучу лапши спагетти в стену, надеясь, что некоторые из них прилипнут. И некоторые из этих «решений» могут вызвать другие проблемы в вашей программе. Например, предложение установить AutoEventWireup = "true" может привести к тому, что некоторые из ваших событий сработают дважды !!! (см. http://support.microsoft.com/kb/814745).

0 голосов
/ 09 января 2019

Это сводило меня с ума в течение недели, пока я наконец не заметил пропущенную настройку. Это основано на ответе Джея Риггса, но для Visual Studios 2010 вместо 2005. В свойствах проекта -> Web -> Отладчики убедитесь, что отладчик ASP.NET отмечен.

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