Подтвердить что ты не робот

Почему отладчик не останавливается в точке останова в моем приложении ASP.NET?

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

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

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

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

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

Добавление:

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

4b9b3361

Ответ 1

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

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

Ответ 2

Люди.... Я нашел другое решение для точки останова, не останавливаясь. В окне Attach to Process в 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).

Привет

Ответ 3

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

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

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

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

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

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

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

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

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

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

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

И затем продолжайте и начните отладку своего кода:)

Ответ 4

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

  • Закройте решение и визуальную студию.
  • Запустить iisreset/stop
  • Удалить все под C:\windows\microsoft.net\framework\v2.0.50727\Временные файлы ASP.NET. Если у вас есть проблемы с удалением некоторых из этих файлов, у вас может быть версия visual studio или ее отладчик все еще работает.
  • Запустить iisreset/start
  • Откройте решение в VS
  • Установите сборку в Debug
  • Запустить перестроить все на уровне решения
  • Хит F5

Ответ 5

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

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

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

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

  • Ковровая бомба всех. DLL: удалите и перезагрузите все указанные DLL файлы (например, ваши проекты класса)

  • Отпустите ОМУ: если # 1 и # 2 не работают, удалите содержимое самого obj и bin, так что все .pdbs и .dll уничтожаются. Перезагрузите .dlls, необходимые и отдайте выстрел.

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

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

  • Режим выполнения: убедитесь, что для режима выполнения VS.Net установлено значение "Отладка", а не "Release"

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

  • Свойства проекта # 1: убедитесь, что Свойства проекта → Отладка → Включить "Отладка ASP.Net - это правда" или "Включить хостинг Visual Studio Процесс" (в зависимости от версии VS.Net вы используете).

  • Свойства проекта # 2: убедитесь, что Свойства проекта → Свойства конфигурации → Сборка → "Генерировать информацию отладки" установите значение "True".

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

  • Script и неуправляемая отладка кода: невозможно отлаживать скрипты или неуправляемый код? Убедитесь, что Project Свойства → Отладка → "Включить ASP Отладка" или "Включить неуправляемый Отладка" (в зависимости от вашей версии VS.Net) имеет значение true.

  • Директива @Page # 1: убедитесь, что атрибут AutoEventWireup в вашем .aspx document @Page директива set на "true".

  • Директива @Page №2: убедитесь, что атрибут Debug в вашем .aspx document @Page директива, установленная для "правда". Если вы не найдете атрибут, все в порядке. По умолчанию это правда.

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

14.1. Спящая ячейка Rogue.dlls # 1: Вы установили проект .dll в Папка GAC? Вы можете запустить .dll, размещенное в вашей папке GAC вместо той, что находится в папке с bin. Удалить/удалить .dll из GAC а затем повторите попытку.

14.2 Спящая ячейка .DLLs # 2:

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

Отпустите WMD (# 3) в папках, которые связаны с вашим проектом.

14.3 Разрушительные DLL-спящие ячейки # 3:.dlls из вашего проекта, которые лежат иначе где, но вместо этого упоминаются в ваш проект. Вы можете найти их путем изучения свойств проекта. В короткий, VS.Net ссылается на некоторые другие .dll, а не тот, который загружен в ваш dev.

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

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

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

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

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

Если это сообщение связано с вашим .pdb file, goto "Выбрать символы" и соответствующий файл .pdb. Ты можешь иметь перезапустить отладку или загрузить VS.Net еще раз. Теперь статус должен измениться на "Загруженные символы".
2. Опции VS.Net: Инструмент → Параметры → Отладка В VS.Net 2005 и далее есть еще один node "Символы", где вы можете попросить VS.Net искать символы. Доступ к ней возможен через окно модуля при отладке тоже.

Ответ 6

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

Ответ 7

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

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

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

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

Ответ 8

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

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

Ответ 9

Всегда искать Конфигурации решений как Отладка для отладки. Он может измениться до версии Release после публикации.

Ответ 10

Для меня Свойства проекта были reset другим разработчиком, чтобы использовать IIS Express, а не мой локальный IIS. Итак, проект прошел нормально, но ничего не удавалось.

Щелкните правой кнопкой мыши Project > Properties > Web > Servers - измените на Local IIS. Я знаю, что это не сработает для всех, но надеюсь, что это поможет кому-то.

Ответ 11

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

Ответ 12

В моем случае проблема заканчивается тем, что связана с использованием полного IIS (не Express) и имеет сборку отладки, где она содержит полные символы отладки, но также имеет свойства проекта, Build, Optimize code.

В Express, это работает отлично, но при полном IIS это не работает. Visual Studio присоединяется к процессу w3wp правильно, но не загружает символы для оптимизированной dll. В Visual Studio вы можете перейти к Debug, Windows, Modules, а затем прокрутить для конкретной DLL и посмотреть, отображается ли в столбце Symbol Status Skipped Loading Symbols.. Щелкните его правой кнопкой мыши и выберите Load Symbols, чтобы он работал.

Еще одна настройка, которая может повлиять на это, - это то, что Visual Studio настроен только на отладку кода пользователя в Debug, Options and Settings, Debugging, General, Enable Just My Code. Когда оптимизировано, dll будут помечены как не пользовательский код при работе под полным IIS, поэтому, когда Just My Code включен, любые точки останова в них будут пропущены. Вы можете либо установить VS для отладки не-пользовательского кода, либо установить, что сборка не оптимизирована, чтобы можно было ударить точки останова.

Ответ 13

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

Ответ 14

Отладка => Параметры => Общие => Снимите флажок "Включить только мой код"

Это сработало для меня