Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Программное обеспечение не всегда ведет себя так, как вы ожидаете, но .NET имеет инструменты и API, которые помогут вам быстро и эффективно диагностировать эти проблемы.
Собственное развертывание AOT — это модель приложения, доступная с .NET 7. Сведения о поддержке диагностики .NET 8 для собственных приложений AOT см. в разделе диагностики Native AOT.
Эта статья поможет вам найти необходимые инструменты.
Отладчики
Отладчики позволяют взаимодействовать с программой. Приостановка, добавочное выполнение, изучение и возобновление работы дает представление о поведении кода. Отладчик — это хороший выбор для диагностики функциональных проблем, которые можно легко воспроизвести.
Профилировщики
Профилировщики позволяют анализировать производительность программы. Вы можете собирать данные об использовании памяти, использовании ЦП и других метриках для диагностики и понимания проблем с производительностью.
Инструментирование для наблюдаемости
.NET поддерживает отраслевые стандартные методы инструментирования, используя метрики, журналы и распределенные трассировки, известные как три основных аспекта наблюдаемости.
Инструментирование — это код, добавляемый в проект программного обеспечения для записи того, что он делает. Затем эти сведения можно собирать в файлах, базах данных или в памяти и анализироваться, чтобы понять, как работает программа программного обеспечения. Это часто используется в рабочих средах для мониторинга проблем и их диагностики. Среда выполнения .NET имеет встроенную инструментирование, которая может быть дополнительно включена и API-интерфейсы, которые позволяют добавлять настраиваемую инструментацию, специализированную для приложения.
Logs
Ведение журнала — это метод, в котором код инструментируется для создания журнала, записи интересных событий, произошедших во время выполнения программы. Часто базовый набор событий журнала настраивается по умолчанию, а более обширный журнал можно включить по запросу для диагностики конкретных проблем. Затраты на производительность зависят от объема регистрируемого объема данных.
В большинстве случаев, независимо от того, следует ли добавлять ведение журнала в существующий проект или создавать новый проект, инфраструктура ILogger является хорошим выбором по умолчанию.
ILogger поддерживает быстрое структурированное ведение журнала, гибкую конфигурацию и коллекцию распространенных приемников , включая консоль, которая отображается при запуске приложения ASP.NET. Кроме того, ILogger интерфейс также может служить фасадом для многих сторонних реализаций ведения журнала , которые предлагают широкие функциональные возможности и расширяемость.
Metrics
Метрики — это числовые измерения, записанные с течением времени для мониторинга производительности и работоспособности приложений. Метрики часто используются для создания оповещений при обнаружении потенциальных проблем. Метрики имеют очень низкие затраты на производительность, и многие службы настраивают их как телеметрия постоянного использования. Исключения часто записываются как метрики и могут быть обобщены для уменьшения кратности данных. Дополнительные сведения см. в разделе "Сводка исключений".
Распределенные трассировки
Распределенная трассировка — это специализированная форма ведения журнала, которая помогает локализовать сбои и проблемы с производительностью в приложениях, распределенных между несколькими компьютерами или процессами. Этот метод отслеживает запросы через приложение, соотносяющее работу, выполняемую различными компонентами приложения, и разделяя его от другой работы, которую приложение может выполнять для одновременных запросов. При необходимости можно отслеживать каждый запрос и выборку, чтобы привязать затраты на производительность.
Сбор инструментирования
Существует несколько способов извлечения данных инструментирования из приложения, в том числе:
- OpenTelemetry — кроссплатформенный, нейтральный поставщик стандарт для сбора и экспорта телеметрии
- Средства командной строки .NET , такие как dotnet-counters
- dotnet-monitor — агент для сбора трассировок и телеметрии
- Сторонние библиотеки или код приложения могут считывать сведения из System.Diagnostics.MetricsILogger<TCategoryName>API и System.Diagnostics.Activity api.
Специализированная диагностика
Если отладка или наблюдаемость недостаточно, .NET поддерживает дополнительные механизмы диагностики, такие как EventSource, Дампы, DiagnosticSource. Дополнительные сведения см. в статье о специализированной диагностике .
Средства диагностики
.NET поддерживает ряд средств CLI , которые можно использовать для диагностики приложений.
Руководства по диагностике .NET Core
Отладка утечек памяти
Руководство. Отладка утечки памяти проходит по поиску утечки памяти. Средство dotnet-counters используется для подтверждения утечки, а средство dotnet-dump используется для диагностики утечки.
Отладка высокой загрузки ЦП
Руководство. Отладка высокой загрузки ЦП позволяет изучить высокую загрузку ЦП. Он использует средство dotnet-counters для подтверждения высокого использования ЦП. Затем он описывает использование трассировки для служебной программы анализа производительности (dotnet-trace) или Linux perf для сбора и просмотра профиля использования ЦП.
Отладка взаимоблокировки
Руководство. Отладка взаимоблокировки показывает, как использовать средство dotnet-dump для изучения потоков и блокировок.
Отладка Starvation ThreadPool
Руководство по отладке нехватки threadPool показывает, как использовать счетчики dotnet-counters и dotnet-stack средства для изучения голода ThreadPool.
Отладка StackOverflow
Руководство по отладке StackOverflow демонстрирует отладку StackOverflowException в Linux.
Отладка дампов Linux
Отладка дампов Linux объясняет, как собирать и анализировать дампы в Linux.
Измерение производительности с помощью EventCounters
Руководство по измерению производительности с помощью EventCounters в .NET показывает, как использовать EventCounter API для измерения производительности в приложении .NET.
Создание собственного средства диагностики
Клиентская библиотека диагностики позволяет создавать собственные пользовательские средства диагностики, которые лучше всего подходят для сценария диагностики. Дополнительные сведения см. в справочнике по API Microsoft.Diagnostics.NETCore.Client.