Visual studio diagnostic tools включить

Обновлено: 04.07.2024

Вещи, которые я пробовал без успеха:

Полностью удалить и переустановить VS.

Выполнение ремонта на установке VS

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

ОТВЕТЫ

Ответ 1

Удаление моего решения .suo (варианты решения) исправил проблему. Моя первоначальная формулировка этой ошибки, затрагивающая даже новые проекты, кажется неправильной. Хотя, я сделал полную переустановку VS после выполнения этого теста, так что это могло повлиять на результат.

Ответ 2

Полное раскрытие: я работаю в Microsoft, в частности, в команде "Инструменты диагностики".

Существуют части диагностических инструментов, которые не будут работать в Windows 7, в частности, используя трассировку профилей ЦП при отладке. Это ограничение операционной системы и ETW. Если вас интересуют только графики и отладочные события, они должны работать. Вы можете включить ведение журнала для наших инструментов, которые могут дать вам некоторое представление о том, почему они не работают:

Для LogLevel вы можете использовать одну из следующих строк: "Все", "Информация", "Отладка", "Предупреждение", "Ошибка" (в вашем случае я бы использовал все, чтобы лучше видеть, что происходит). Что касается LogDirectory, это каталог по вашему выбору "C:\Logs". Когда вы закончите воспроизведение сценария, закройте VS, чтобы очистить журналы и не забывайте удалять эти ключи, поскольку ведение журнала диагностических инструментов довольно интенсивно.

Вы должны иметь возможность искать "Ошибка ---" в журналах, чтобы получить представление о том, что происходит. Мы видели проблемы с некоторыми расширениями VS и пользовательскими проектами.

Ответ 3

У меня были проблемы с этим некоторое время назад.

1) Проверьте Инструменты > Параметры > Отладкa > Общие > Включить диагностические инструменты во время отладки

2) Проверьте Инструменты > Параметры > Intellitrace > Включить intellitrace

Ответ 4

Никто из других не работал у меня. Мне нужно было закрыть все Visual Studios и снова открыть его, а диагностический инструмент работал.

(я удалил файл .suo, убедился, что все правильные параметры включены, но поскольку у меня был другой сеанс Visual Studios, ни одна из них не работала, пока я не закрыл все)

Ответ 5

У меня был еще один экземпляр визуальной студии с диагностическим. Это была проблема для меня.

Ответ 6

У меня была такая же проблема, хотя удаление файла .suo не помогло, я также отремонтировал Visual Studio 2015 Professional, а затем он сработал. Поэтому для будущих читателей, если удаление .suo не помогает, попробуйте также отремонтировать Visual Studio и наоборот.

Ответ 7

У меня была аналогичная проблема с Visual Studio 2015 Pro Update 3, работающим в Windows 10 Home. Среда выполнения памяти и использования процессора перестала работать. При удалении файла .suo исправлена ​​проблема, о чем свидетельствует ответ proc-self-map. Файл .suo был похоронен в скрытой директории .vs, поэтому я удалил весь подкаталог .vs. Теперь время работы памяти и использования процессора снова напоминает шарм. Не требуется переустановка.


  • PerfTip
  • Режим Edit & Continue для x64-систем
  • Lambda Expression Evaluation в Watch and Immediate Window
  • Diagnostic Tools Window
  • Live Visual Tree и Live Property Explorer
  • Diagnostic Tools Hub

PerfTip

Debugging tips — это маленькие подсказки, всплывающие в ходе отладочной сессии и отображающие значения переменных. Они уже давно присутствуют в VS и, думаю, все с ними знакомы. Теперь вместо них PerfTip выполняет ту же цель: облегчает отладку и повышает её продуктивность. В отличие от Debugging tips, в PerfTip при перемещении по коду отображается информация о тайминге. Раньше нам приходилось собирать тайминги построчно, вставляя код для проведения измерений, вроде класса System.Diagnostics.Stopwatch . Но теперь необходимость в этом отпала: PerfTip умеет измерять время, прошедшее между двумя остановками отладчика. Причём не имеет значения, используете ли вы Step Into, Step Over или Run to Cursor для измерения лишь одной инструкции или целого блока кода. Тайминги отображаются как в PerfTip, так и в виде списка в Diagnostic Tools Window).



PerfTip показывает, что на выполнение метода BuildOpenMenu () ушло 1,357 секунды.

Режим Edit & Continue для x64-систем

Функциональность “edit and continue” появился в VS несколько лет назад, но раньше он мог использоваться только для отладки 32-битных процессов. В этом режиме вы можете модифицировать код, не выходя из отладочной сессии. При этом он перекомпилируется в фоне и сразу готов к использованию. Преимущества очевидны: вы можете построчно выполнять код, анализировать результат, модифицировать, перемещать курсор оператора перехода на позицию перед модифицируемой строкой и вновь её выполнять. И вам даже не понадобится перезапускать отладчик.

Вычисление лямбда-выражений в Watch and Immediate Window

VS 2015 теперь поддерживает вычисление лямбда-выражений в отладочных окнах. Это бывает удобно, например, при анализе коллекций. Допустим, у вас есть список людей на 50 000 записей, и вам нужно найти человека с фамилией Meyer. Раньше это можно было сделать лишь одним способом: добавив коллекцию в окно просмотра (watch window), развернув её и пролистав весь список вручную. Не слишком увлекательный и эффективный процесс, особенно, если список велик. Теперь же вы можете найти нужную запись с помощью простого LINQ-выражения:


Diagnostic Tools Window

В ходе отладки в этом окне можно применять инструменты для профилирования. Чтобы его открыть, выберите пункт Show Diagnostic Tools в меню Debug. По умолчанию в нём будут отображены графики загрузки процессора и памяти. Жёлтые маркеры обозначают работу сборщика мусора. В предыдущих версиях VC все эти данные можно было получить только во время сессии профилирования. Теперь же, вместо многократной процедуры записи и анализа, вы можете наблюдать за поведением системы в реальном времени в процессе отладки. Вы сразу обнаружите всплески в использовании ресурсов, в том числе при сборе мусора, и сможете сопоставить их с отлаживаемым фрагментом кода или действием, выполняемым в интерфейсе.


Другим важным нововведением стал список всех PerfTip. Каждый раз, когда отладчик останавливается и выводит PerfTip, он добавляет новое измерение список в Diagnostic Tools Window. Благодаря этому списку вы можете наблюдать за замерами времени и быстро переходить к соответствующим строкам.

Окно диагностики позволяет не только оценить загрузку процессора и памяти, но и записать одним кликом слепок управляемой памяти. При этом система автоматически подсчитает и отобразит количество объектов в куче, а также их общий размер в байтах. На эти значения можно кликнуть и посмотреть подробный список всех объектов, присутствующих в памяти. Всё это позволяет быстро обнаружить причины каких-либо проблем с памятью, например, утечек. Обратите внимание, что данный инструмент полностью интегрирован в отладчик и не требует его перезапуска.

Live Visual Tree и Live Property Explorer

Это два инструмента, разработанные специально для WPF-приложений (Windows Presentation Foundation) и универсальных приложений. С их помощью можно анализировать запущенную программу, отобразив её в качестве «визуального дерева» (visual tree). Визуальное дерево — это внутреннее представление пользовательского интерфейса, содержащее все видимые элементы приложения. Получается очень похоже на инструменты для веб-разработчиков, запускаемые в браузерах командой «исследовать элемент». Визуальное дерево позволяет одним кликом выбрать элемент пользовательского интерфейса, просмотреть и изменить как сам элемент, так и его свойства. Все изменения сразу будут применены в запущенном приложении. А раньше это можно было сделать только с помощью сторонних приложений, например, Snoop или WPF Inspector.

На иллюстрации ниже представлен пример визуального дерева WPF-приложения. Слева представлена программа Family.Show, её референсная WPF-реализация создана компанией Vertigo и доступна для скачивания на Codeplex. На иллюстрации выделена фотография принца Чарльза, и её свойства отображены справа в Live Visual Tree. Дерево начинается с класса MainWindow и развёрнуто вплоть до выбранного объекта. А в колонке справа отображается количество дочерних объектов для каждого визуального элемента.


Если кликнуть правой кнопкой на объекте внутри дерева, то появится контекстное меню. В нём есть полезные пункты Go to source и Show Properties. Первый открывает файл XAML, содержащий определение элемента. А второй пункт запускает Live Property Explorer.

Здесь представлены свойства элемента и их значения. При этом Live Property Explorer позволяет группировать свойства по происхождению их значений. Из иллюстрации видно, что значения бывают по умолчанию, вычисленные, унаследованные и локальные. Также они могут быть получены из файла определения стилей XAML. Все значения можно изменять прямо в Live Property Explorer и сразу наблюдать, какой эффект это оказывает на работающее приложение.


Diagnostic Tools Hub

Этот инструмент появился в Visual Studio 2013. Запустить его можно через Debug -> Start Diagnostic Tools without Debugging, он является точкой запуска для всех инструментов, имеющих отношение к производительности и диагностике. Diagnostic Tools Hub представляет собой набор многочисленных маленьких инструментов, каждый из которых измеряет, записывает, вычисляет и отображает в окне Visual Studio только какой-то один параметр. Все инструменты используют единую структуру визуализации данных в виде временной шкалы с подробностями по каждой записи. Шкала представляет собой гистограмму основного измерения, на которой могут отображаться пользовательские маркеры для особых событий или значений. Можно просматривать данные более подробно, при этом форма отображения будет разной для всех инструментов. Так что при желании можно более детально изучить параметры любого измерения и вывести общую информацию в виде круговой диаграммы. Поскольку формат вывода у всех инструментов общий, то в течение одной сессии можно одновременно запускать несколько инструментов, просматривая результаты их измерений в компактном виде. Например, можно скомбинировать индикатор активности пользовательского интерфейса и уровень загрузки процессора. Раньше эти инструменты были заточены, в основном, под приложения для Windows Store. Благодаря своей простоте и унифицированному дизайну набор инструментов очень часто обновляется, и в VS 2015 многие из них поддерживают и другие технологии, например Windows Presentation Foundation.

Старый профилировщик в Visual Studio, умевший измерять загрузку процессора и памяти, не вписывался в концепцию маленьких диагностических инструментов со стандартным форматом вывода данных. Поэтому ради обратной совместимости его интегрировали в Diagnostic Tools Hub. Создатели VS планируют постепенно распределить функциональность профилировщика по нескольким отдельным инструментам, доступным из хаба.

Итак, какой же набор инструментов представлен в Diagnostic Tools Hub в Visual Studio 2015:

  • Application Timeline: позволяет мониторить активность UI-потока приложений, основанных на XAML
  • CPU Usage: использование процессора ()
  • GPU Usage: отображает выполняемые графической картой инструкции для DirectX-приложений
  • Memory Usage: отображает потребление памяти для обнаружения утечек
  • Performance Wizard: старый профилировщик Visual Studio
  • Energy Consumption: отображает расчётное потребление энергии для мобильных устройств
  • HTML UI Responsiveness: позволяет мониторить активность UI-потока приложений, основанных на HTML
  • JavaScript Memory: анализирует использование памяти в HTML-приложениях
  • Network: профилирует сетевой трафик


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


Заключение

В Visual Studio 2015 есть много замечательных возможностей по отладке, диагностике и профилированию, которые могут помочь поднять производительность разработчика. Все упомянутые инструменты есть в каждой редакции VS, вплоть до бесплатной Visual Studio Community Edition. Здесь вы найдёте для себя всё необходимое. При этом впервые в истории VS профилирование можно осуществлять прямо во время отладки. В Visual Studio 2015 профилирование приложений объединено с процессом удобной отладки, ежедневно применяемой разработчиками.

Средство диагностики Использование ЦП, интегрированное в отладчик, позволяет находить проблемы с производительностью во время отладки. Анализировать загрузку ЦП также можно без подключения отладчика — нужно просто указать выполняющееся приложение. Дополнительные сведения см. в разделе Запуск средств профилирования с отладчиком или без него.

При приостановке отладчика средство Загрузка ЦП в окне "Средства диагностики" собирает сведения о функциях, которые выполняются в приложении. Кроме того, это средство перечисляет функции, которые выполняли максимальный объем работы, а также предоставляет график временной шкалы, который позволяет сосредоточить внимание на определенных сегментах сеанса выборки.

В этом руководстве рассмотрены следующие задачи:

  • Сбор данных об использовании ЦП
  • Анализ данных о загрузке ЦП

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

Шаг 1. Сбор данных профилирования

Откройте проект для отладки в Visual Studio и установите точку останова в приложении в точке, где вы хотите проверить загрузку ЦП.

Установите вторую точку останова в конце функции или области кода, который требуется проанализировать.

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

Окно Средства диагностики появится автоматически, если вы не отключали эту функцию. Чтобы снова открыть окно, щелкните Отладка > Окна > Показать средства диагностики.

Вы можете выбрать, что следует просмотреть, Использование памяти или Загрузка ЦП (либо оба средства), с помощью параметра Выбор средств на панели инструментов. В Visual Studio Enterprise также можно включить или отключить IntelliTrace, выбрав Сервис > Параметры > IntelliTrace.

Показать средства диагностики

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

Щелкните Отладка > Начать отладку (Запустить на панели инструментов или F5).

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

Вкладка "Сводка средств диагностики"

Запустите сценарий, который вызвал срабатывание первой точки останова.

Приостановив отладчик, включите сбор данных о загрузке ЦП, а затем откройте вкладку Загрузка ЦП.

Средства диагностики, включение профилирования ЦП

При выборе пункта Запись профиля ЦП Visual Studio начнет записывать функции и сведения о времени их выполнения. Эти собранные данные можно просматривать только в том случае, если приложение останавливается в точке останова.

Нажмите клавишу F5, чтобы запустить приложение до второй точки останова.

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

Профилировщик начинает подготавливать данные потока. Дождитесь завершения этой операции.

Средства диагностики, подготовка потоков

Средство "Загрузка ЦП" выведет отчет на вкладке Загрузка ЦП.

Вкладка "Загрузка ЦП" в средствах диагностики

Если вы хотите выбрать для анализа более конкретную область кода, выберите область на временной шкале ЦП (это должна быть область, в которой отображаются данные профилирования).

Средства диагностики, выбор сегмента временной шкалы

На этом этапе можно начать анализировать данные.

При определении проблем с производительностью рекомендуется сделать несколько измерений. Вполне естественно, что производительность варьируется от запуска к запуску, а первое выполнение путей кода обычно происходит медленнее, так как необходимо разово провести такие действия по инициализации, как загрузка библиотек DLL, JIT-компиляция методов и инициализация кэшей. Сделав несколько измерений, вы сможете лучше понять диапазон и медиану отображаемой метрики и сравнить показатель первого выполнения со стабильной производительностью области кода.

Шаг 2. Анализ данных о загрузке ЦП

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

В списке функций изучите функции, которые выполняют большую часть работы.

Средства диагностики, список функций "Загрузка ЦП"

Функции перечисляются, начиная с тех, которые выполняют большую часть работы (а не в порядке вызова). Это позволяет быстро находить функции, которые выполнялись дольше всего.

В списке функций дважды щелкните одну из функций вашего приложения, которая выполняет много работы.

При двойном щелчке функции в левой панели откроется представление Вызывающий/вызываемый.

Представление "Вызывающий/вызываемый" в средствах диагностики

В этом представлении выбранная функции отображается в заголовке и в поле Текущая функция (в этом примере GetNumber). Функция, вызывавшая текущую функцию, отображается в левой части окна в разделе Вызывающие функции, а все функции, вызываемые текущей функцией, отображаются в поле Вызываемые функции справа. (Можно выбрать любое поле, чтобы изменить текущую функцию.)

В этом представлении показано общее время (мс) и доля общего времени выполнения приложения, затраченного на выполнение функции. В поле Тело функции также показан общий объем времени (и доля времени), затраченного в теле функции за исключением времени, затраченного в вызываемых и вызывающих функциях. (В этом примере в теле функции затрачено 2367 из 2389 мс, а оставшиеся 22 мс затрачены во внешнем коде, вызванном этой функцией).

Высокие значения в поле Тело функции могут свидетельствовать о проблемах производительности внутри самой функции.

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

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

Средства диагностики, дерево вызовов

Средства диагностики, дерево вызовов

Изображение Описание
Шаг 1
Узел верхнего уровня в деревьях вызовов для использования ЦП представляет собой псевдоузел
Шаг 2
В большинстве приложений при отключенном параметре Показать внешний код узлом второго уровня является узел [Внешний код] , который содержит код системы и инфраструктуры, запускающий и останавливающий приложение, отрисовывающий пользовательский интерфейс, управляющий планированием потоков и предоставляющий приложению другие низкоуровневые службы.
Шаг 3
Дочерними элементами узла второго уровня являются методы пользовательского кода и асинхронные подпрограммы, которые вызываются или создаются кодом системы и инфраструктуры на втором уровне.
Шаг 4
Дочерние узлы метода содержат данные только для вызова родительского метода. Если параметр Показать внешний код отключен, методы приложения также могут содержать узел [Внешний код] .

Ниже приведены дополнительные сведения по значениям столбца.

Значение Общее время ЦП указывает, какой объем работы был выполнен некоторой функцией и всеми вызванными ей функциями. Высокие значения общего времени ЦП указывают на функции, которые в целом являются наиболее ресурсоемкими.

Значение Собственное время указывает, какой объем работы был выполнен кодом в теле функции, за исключением работы, выполненной вызванными ей функциями. Высокие значения собственного времени ЦП могут свидетельствовать о проблемах производительности внутри самой функции.

Модули. Имя модуля, содержащего функцию, или количество модулей, содержащих функции в узле [Внешний код].

Чтобы увидеть вызовы функций, которые используют самый высокий процент ЦП в представлении дерева вызовов, нажмите Развернуть критический путь.

Средства диагностики, критический путь

Если код отображается в дереве вызовов с пометкой "broken" (неработающий) или "unwalkable stack" (нетрассируемый стек), это указывает, что трассировка событий Windows, скорее всего, прервана. Для устранения проблемы попробуйте повторно выполнить ту же трассировку.

Просмотр внешнего кода

Внешний код — это функции в компонентах системы и платформы, которые исполняются вашим кодом. Внешний код включает функции, которые запускают и останавливают приложение, отрисовывают пользовательский интерфейс, управляют потоками и предоставляют приложению другие низкоуровневые службы. В большинстве случаев внешний код вас интересовать не будет, поэтому средство "Загрузка ЦП" собирает внешние функции пользовательского метода в один узел [Внешний код] .

Если вы захотите посмотреть пути к вызовам внешнего кода, выберите Показать внешний код в списке Представление фильтра и выберите Применить.

Выбор списка "Представление фильтра", выбор параметра "Показать внешний код"

Помните о том, что многие цепочки вызовов имеют глубокий уровень вложенности, поэтому ширина столбца "Имя функции" может превышать ширину многих мониторов. В этом случае имена функций отображаются в виде […] .

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

Если вы выполняете профилирование внешнего кода, вызывающего функции Windows, следует убедиться, что используются самые новые версии PDB-файлов. Без этих файлов имена функций Windows в представлениях отчетов будут отображаться в непонятном или трудном для понимания виде. Дополнительные сведения о том, как убедиться в наличии нужных файлов, см. в статье Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.

Следующие шаги

В этом руководстве вы узнали, как собирать и анализировать данные об использовании ЦП. Если вы уже ознакомились с общими сведениями о средствах профилирования, можно перейти к анализу данных об использовании памяти в приложениях.

вещи, которые я пробовал без успеха:

полностью удалить и переустановить VS.

выполнение ремонта на моей установке VS

в параметрах отладки отключено обеспечение "использовать режим совместимости ".

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

удаление моего решения .suo (варианты решения) файл Исправлена проблема. Мое первоначальное утверждение об этой ошибке, влияющей даже на новые проекты, кажется неправильным. Хотя я сделал полную переустановку VS после выполнения этого теста, поэтому возможно, что это повлияло на результат.

полное раскрытие: я работаю в Microsoft, в частности в команде диагностических инструментов.

есть части диагностических инструментов, которые не будут работать в Windows 7, в частности, принимая трассировку профилирования процессора во время отладки. Это ограничение операционной системы и ИТР. Если вас интересуют только графики и события отладки, они должны работать. Вы можете включить ведение журнала для наших инструментов, который может дать вам некоторое представление о том, почему они не работа:

для LogLevel вы можете использовать одну из следующих строк "Все", "информация", "отладка", "предупреждение", "ошибка" (в вашем случае я бы использовал все, чтобы лучше видеть, что происходит). Как для LogDirectory это каталог "C:\Logs". Когда вы закончите повторять сценарий, закройте VS, чтобы очистить журналы и не забудьте удалить эти ключи, поскольку ведение журнала диагностических инструментов довольно интенсивно.

вы должны иметь возможность искать "ошибка - - -" в журналах чтобы получить представление о том, что происходит. Мы видели проблемы с некоторыми расширениями VS и пользовательскими проектами.

У меня были проблемы с этим некоторое время назад.

1) Проверить Инструменты>Параметры>отладка>общие>включить диагностические инструменты во время отладки

2) проверить Инструменты>Параметры>Intellitrace > включить intellitrace

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

(Я удалил .suo файл, убедился, что все правильные параметры были включены, но поскольку у меня был еще один сеанс Visual Studios, ни один из них не работал, пока я не закрыл все)

У меня уже был другой экземпляр visual studio, работающий с диагностическим. Это было проблемой для меня.

У меня была такая же проблема, хотя удаление.файл suo не помог, я также отремонтировал Visual Studio 2015 Professional, а затем он работал. Так для будущих читателей, если удалить .suo не помогает, попробуйте также восстановить Visual Studio и наоборот.

У меня была аналогичная проблема с Visual Studio 2015 Pro Update 3, работающим на Windows 10 Home. Отображение времени выполнения памяти и использования ЦП перестало работать. Удаление .СУО файл исправил проблему,как указано в ответе proc-self-map. Этот.СУО файл был похоронен в.vs скрытый каталог, поэтому я удалил все .vs подкаталог. Теперь отображение времени выполнения памяти и использования процессора снова работает как шарм. Переустановка не требуется.

Читайте также: