Вопрос по debugging, visual-studio-debugging, .net, visual-studio-2010 – «Step Into» неожиданно не работает в Visual Studio

36

Внезапно я столкнулся с проблемой, из-за которой я не могу войти ни в какой код через отладку в Visual Studio. Перешагивание работает нормально, но отказываться от него не получается (F11) любой мой код. Раньше это работало, а теперь - нет.

Я пробовал кое-что из приведенного ниже, но все равно не добился успеха:

Delete all bin files in every project in my solution, clean solution, re-build solution.

Build projects in solution indivdualy

Restart machine

ЭтоASP.NET C # приложение, потребляющееWCF обслуживать на месте. Это в режиме отладки. У меня установлена точка останова на странице, использующей сервис. Точка останова срабатывает, но она не переходит в служебный код.

Сайт ASP.NET и код сервиса - все в одном решении. Это вдруг не работает, это работало раньше.

Как я могу решить эту проблему?

Добавляя точку останова в сервисный проект, я получаю предупреждение:

Breakpoint will not currently be hit. No symbols have been loaded for this document.

Я удалил все папки bin для всех проектов и перестроил их один за другим. Все они преуспели, но все же я получаюsymbols won't load на любой точке останова я помещаю любой проект в решение, отличное от проекта ASP.NET, где работает точка останова. Я был в состоянии отладить шаг во всех проектах раньше, это неожиданно.

Информация из окна вывода.

'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\SMDiagnostics\v4.0_4.0.0.0__b77a5c561934e089\SMDiagnostics.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.DurableInstancing\v4.0_4.0.0.0__31bf3856ad364e35\System.Runtime.DurableInstancing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml.Hosting\v4.0_4.0.0.0__31bf3856ad364e35\System.Xaml.Hosting.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\2d49cf50\14eee2cf\App_Web_jmow15fw.dll', Symbols loaded.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Serialization\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Serialization.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.WorkflowServices\v4.0_4.0.0.0__31bf3856ad364e35\System.WorkflowServices.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Web\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Web.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Discovery\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Discovery.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Activities\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Activities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Routing\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Routing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.ServiceModel.Channels\v4.0_4.0.0.0__31bf3856ad364e35\System.ServiceModel.Channels.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.IdentityModel\v4.0_4.0.0.0__b77a5c561934e089\System.IdentityModel.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
что это за код? Robert Levy
Может быть, глупый вопрос, но вы уверены, что проект службы WCF успешно компилируется? Chris Shain
ты удалил свойobj папки вместе сbin папки? agent-j
Все проекты компилируются да Nick LaMarca
Является ли сборка, в которую вы не можете войти, в GAC? agent-j

Ваш Ответ

12   ответов
0

Включить отладку неуправляемого кода & quot; в свойствах проекта | Debug сделал свое дело. Я не знаю, почему это сработало, поскольку весь код проекта находится на vb.net.

В более поздних версиях этот параметр был переименован в «Включить отладку собственного кода».

0

что я прочитал и понял, вы должны искать следующий файл:

Имя сборки Project.pdb в каталоге bin. Если вы его не видите, он не будет создан. Смотрите мои комментарии по настройке отладочной информации на полную, и Options / Debugging / Symbols.

Установите подробные или подробные выходные данные сборки проекта (Инструменты / Параметры / Проекты и решения / Построить и запустить / MSBuild).

Найдите в этом файле определенные задачи (например, AssemblyName.pdb), удалите, скопируйте и т. Д. И посмотрите, сможете ли вы выяснить, пытается ли он удалить файл pdb, на который он ссылается из (dll / exe) куда он кладет, копирует и т. д.

Если он не создается, вы увидите только задачи удаления. Если это так, вы увидите задачи копирования и ссылки. Эти пути копирования и ссылки будут указывать, куда вам нужно направить консоль модулей этой сборки (AssemblyName.exe), чтобы получить ее файл символов (т.е. куда был скопирован этот файл pdb).

мы говорим о проекте с сервисом в нем правильно? Nick LaMarca
где находится подробный файл журнала, на который я смотрю? Nick LaMarca
я добавил информацию из окна вывода выше Nick LaMarca
Вывод, который вы опубликовали, - это не то, что я хотел, чтобы вы искали, а что-то вроде: Задача & quot; Копировать & quot; Копирование файла из & quot; obj \ Development \ YourAssembly.pdb & quot; в & quot; bin \ Development \ YourAssembly.pdb & quot ;. Эта строка будет указывать, что он построил файл символов и показывает, где он должен быть.
Детали окна вывода - это то, на что я ссылался. Установите вывод, как я упоминал, и это информация журнала, на которую я ссылаюсь. Если ваш сервисный проект является тем, что вы не можете отладить, то это тот, который я говорю о восстановлении с подробным / подробным ведением журнала в окне вывода (среди других предложений, а также для этого проекта, например, упомянутых конфигураций отладки) , Затем в этом приложении-службе (в которое вы не можете войти) найдите имя сборки этой службы (AssemblyName.exe) и найдите pdb, например, AssemblyName.pdb и действия, о которых я упоминал, в этом подробном выводе.
5

enter image description hereЯ использую VS 2017, но это работает и в 2015 году. Моя проблема заключалась в том, что когда я устанавливал точку останова, код правильно останавливался в этой точке, но когда я нажимал F10 или F11, код просто заканчивал работу, а не переходил к следующей строке. Я также заметил, что хотя код был остановлен в точке останова, я не мог использовать курсор для наведения курсора на мои переменные, чтобы увидеть их значения. Вот как я исправил проблему

With the project open but not running make sure the Standard tool bar is displayed (it probably is because it's the default) Look at the drop down list in the toolbar that has the options Debug, Release, Configuration Manager. Select Debug from this list. Mine was set to Release
19

IEnumerable, В этой ситуации F11 может пропустить метод доIEnumerable повторяется, так как его выполнение откладывается до тех пор.

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

Начал работать после того, как я разрешил экземпляр службы с использованием Unity.

Больше информации здесь: Разрешение экземпляров типов с помощью Unity

1

Is the WCF project a web application as well? Is ASP.NET debugging enabled for it? (right-click on the WCF project, go to Properties | Web)

I've also had this happen to projects when the references are messed up -- make sure that the reference from the web application is to the same copy of the project as the one in the solution.

Check the configuration manager (in Solution Explorer, right-click on solution | Configuration Manager), and make sure that both projects are building.

Sometimes the .suo file gets corrupted, and you can get all sorts of weird behavior. You can try deleting it (make a backup copy if you are paranoid, see The evil suo file - fighting and winning with Visual Studio).

Что мне делать на вкладке «Свойства / Веб» проекта WCF? Nick LaMarca
Да, это было проверено в проекте wcf services Nick LaMarca
Внизу есть набор флажков - убедитесь, что установлен флажок для включения отладки asp.net.
Я удалил все папки bin для всех проектов и перестроил их 1 на 1, все они преуспели, но все еще получали символы, которые не будут загружаться на любой точке останова, которую я вставил в любой проект в решении, кроме проекта asp.net, где работала точка останова , Я был в состоянии отладить шаг во всем проекте раньше, это неожиданно. Nick LaMarca
Основываясь на вашем последнем комментарии, определенно проверьте тот отладочный вариант, о котором мы написали. Я один или два раза получал, что этот ящик загадочным образом не проверен (возможно, другой разработчик проверил его таким образом и не взял кредит, возможно, в VS скрывается какая-то ошибка, которая его вызывает).
1

F11 ключ может быть отскок к чему-то еще. Это может работать, если вы нажмете кнопку перехода в Visual Studio.

Я пытался просто нажать кнопку «шаг в» в VS, но все тот же результат Nick LaMarca
Вы можете использовать функцию step-into в других проектах или только внутри этого проекта step-into не работает? Это может быть просто основной проблемой VS.
43

Delete the solution's suo file (contains debug information, user settings such as break points, bookmarks, and other user settings.) Delete the Visual Studio cache files (see below) Delete all temporary files (a shift from VS9 to VS10 is that VS10 uses the temp folder) Manually delete all obj and bin folders using Windows Explorer.

Откройте Visual Studio и перестройте все. Это всегда работает. УвидетьC # VS2010 Ошибка входа в режим останова.

Для справки:

Private Sub ClearVS9
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\VisualStudio\9.0\ProjectAssemblies")
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\VisualStudio\9.0\Recent")
    ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Application Data\ApplicationHistory")
    ClearFolder(oShell.ExpandEnvironmentStrings("%USERPROFILE%") & "\Local Settings\Application Data\Microsoft\VisualStudio\9.0\ProjectAssemblies")
    ClearFolder(oShell.ExpandEnvironmentStrings("%WINDIR%") & "\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files")
End Sub

Private Sub ClearVS10
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Local\Microsoft\WebsiteCache")
    ClearFolder(oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Local\Microsoft\VisualStudio\10.0\ProjectAssemblies")
End Sub

Смотрите ссылкуЗлой файл suo - сражайтесь и побеждайте с помощью Visual Studio упомянутый JMarsch.

Это часть скрипта, используйте его только для справки. В диалоговом окне «Выполнить» просто введите переменную среды и нажмите Enter. Это откроет Window Explorer. Перейдите к папкам, затем удалите файлы.
Я отредактировал этот ответ. Прочитайте обновление, чтобы увидеть, как его использовать. В реальном сценарии вы можете заменить всплывающее окно оператором удаления, чтобы удалить файлы, а не просто отобразить пути.
Я не уверен, как использовать этот код. Должен ли я просто создать консольное приложение с вашей подпрограммой ClearVS2010 и запустить его? Как выглядит ClearFolder? Nick LaMarca
Спасибо, только Удалить SUO файл и временную папку достаточно для запуска отладчика.
Если вы хотите добавить код удаления, вы можете найти примерhere.
2

Remove temporary ASP.NET files from the %temp% location. Clean and build projects in your solution one by one and then build your host and try debugging.

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

Возможно, ваш отладчик не загружает файл PDB, связанный с dll вашего модуля.Here is a good post Если проблема не устранена, проверьте ее. Удачи.
Вы читали пост, который я упомянул выше? Во время отладки в Visual Studio нажмите Отладка & gt; Windows & gt; Модули. Среда IDE закрепит окно модулей, показывая все модули, которые были загружены для вашего проекта. Найдите библиотеку DLL вашего проекта и проверьте ее состояние символа. Если написано «Символы загружены», значит, вы «золотой». Если там написано что-то вроде «Не удается найти или открыть файл PDB», щелкните правой кнопкой мыши по вашему модулю, выберите «Загрузить символы» и найдите путь к вашей PDB.
Я пытался это, к сожалению, я не мог заставить его работать Nick LaMarca
Там написано: WebDev.WebHost40.dll C: \ windows \ Microsoft.Net \ assembly \ GAC_32 \ WebDev.WebHost40 \ v4.0_10.0.0.0__b03f5f7f11d50a3a \ WebDev.WebHost40.dll Нет Нет Не удается найти или открыть файл PDB. 3 10.0.40219.1 18.02.2011 22:09 03100000-03112000 [3204] WebDev.WebServer40.EXE: управляемый (v4.0.30319) Не удается загрузить символы, но где находятся символы? Nick LaMarca
В приложение asp загружены символы, использующие службу wcf. Единственное, что не имеет загруженных символов, это webDev.WebHost40, все это работало в прошлом, а теперь нет. Дегаггер достигает точек останова в приложении asp, но не входит в служебный код Nick LaMarca
0

убедитесь, что все ваши выходные пути указаны в одном выходном каталоге

0

Я хотел шагнуть в метод, который возвращаетIEnumerator и я вызывал его простым вызовом (просто название метода).

private void Start()
{
    GetTagsFromCloud();
}

Но поскольку он работает в фоновом режиме, лучше назвать его следующим образом.

private void Start()
{
    StartCoroutine(GetTagsFromCloud());
}
0

орку, на которую я пытался ссылаться, находилась в моей обычной файловой системе, но во время выполнения она загружалась из GAC. Я всегда думал, что .NET пытался загрузить сначала из локального бина, а затем из GAC, но я не думаю. В любом случае, он не смог найти символы отладки .pdb для версии в GAC, и поэтому я не смог вмешаться. Как только я обновил сборку в GAC и предоставил файл .pdb, он работал.

Похожие вопросы