Устранение ошибок профилирования и устранение проблем

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

Нет результатов

Ошибка: "В текущем наборе фильтров нет данных"

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

Как исправить

  • Убедитесь, что выбор времени содержит данные в нем. Если вы изменили выбор времени на диаграмме над данными, нажмите кнопку "Очистить выделение ", чтобы сбросить ее.
  • Затем, если нет данных, убедитесь, что все категории и потоки включены в соответствующих раскрывающихся списках.
  • Если профилирование приложения является машинным кодом, обязательно включите параметр Show Native Code в раскрывающемся списке Параметры.
  • Если у вас по-прежнему нет данных, то собранная трассировка, скорее всего, была слишком короткой, чтобы какие-либо данные присутствовали. Убедитесь, что программа, которую вы собираете данные, не выполняется слишком быстро (менее секунды).

См. также: показать внешний код

Занимает много времени для завершения результатов

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

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

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

См. также:

Ошибка "Не удалось создать файл манифеста для этой диагсессии" или "ошибка не удалось создать файл манифеста для диагсессии, Visual Studio не сможет повторно открыть этот сеанс".

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

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

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

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

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

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

Ошибка: "Исходная информация недоступна".

Чтобы просмотреть сведения об источнике, необходимо иметь доступ к PDF-файлам с момента сбора. Таким образом, например, если вы собираете диагсессию ЦП, внесите некоторые изменения в код, перекомпилируйте (который заменяет старый PBD), а затем снова откройте диагсессию. Скорее всего, вы не сможете просмотреть исходные сведения для модулей обновленного кода.

Как исправить самый простой обходной путь для этой проблемы — собрать новую диагсессию после внесения изменений. Таким образом, вы можете убедиться, что ваши PDF-файлы будут обновлены.

Ошибка: "Сбой анализа памяти из-за внутренней ошибки".

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

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

Как устранить эту проблему из-за ошибки в средстве, исправленном в версии 17.3. Обновление до более поздней версии должно решить проблему. Если проблема по-прежнему остается постоянной после обновления, создайте билет обратной связи и вложите в билет:

  • Файл диагсессии
  • Мини-dump Visual Studio
  • Снимок экрана: моментальные снимки памяти, сделанные.

Для этой проблемы не существует обходного решения, и сеанс профилирования потребуется перезапустить.

Ошибка: "События диагностики X удалены, некоторые сведения в отчете могут быть отсутствуют или неточные".

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

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

Ошибка: ресурсы ETW исчерпаны

Профилировщик Visual Studio использует трассировку событий для Windows (ETW) для сбора сведений о производительности. Существует ограниченное количество сеансов ETW, доступных для использования в системе, и если все сеансы уже используются, вы получите следующую ошибку: ETW resources have been exhausted Эти сеансы используются другими программами, такими как набор средств SysInternals, другие профилировщики и другие средства диагностики. Эту проблему можно устранить, выполнив следующие действия.

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

  • Отложите дополнительные ресурсы, выполнив следующие действия из командной строки с повышенными привилегиями и перезагрузив:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    Выполнение этой команды увеличивает число сеансов по умолчанию от 64 до 128 (256 — максимальное число сеансов, разрешенных в системе).

Ошибка: средство использования ЦП не работает на виртуальной машине ARM64

Профилировщик Visual Studio использует трассировку событий для Windows (ETW) для сбора сведений о производительности. В настоящее время сбор примеров профилей с помощью ETW не поддерживается в Windows для ARM64 при запуске на виртуальной машине. Чтобы обойти это ограничение, можно использовать средство использования ЦП на фактическом устройстве ARM64 или использовать средство инструментирования для сбора сведений о времени.

Ошибка. Средство использования памяти не работает в .NET 7 и среде выполнения .NET 8.0.0-8.0.1 с включенным сервером GC

Из-за проблемы со средой выполнения .NET 7 и распространения в среду выполнения .NET 8 версии 8.0.0 и 8.0.1 невозможно перечислить объекты при использовании сборки мусора сервера. Сборка мусора сервера включена по умолчанию для приложений ASP.NET Core.

Как исправить

Для обхода этой проблемы:

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

См. также: