Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Программное обеспечение не всегда ведет себя так, как вы ожидаете, но .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.