Общие сведения о средствах диагностики в .NET Core
Статья
Программное обеспечение не всегда работает должным образом, но в .NET Core есть средства и API, которые помогут вам быстро и эффективно диагностировать проблемы.
Эта статья поможет вам выбрать нужные средства.
Отладчики
Отладчики позволяют взаимодействовать с программой. Приостановка, добавочное выполнение, изучение и возобновление работы дает представление о поведении кода. Отладчик — это хороший выбор для диагностики функциональных проблем, которые можно легко воспроизвести.
Модульное тестирование
Модульное тестирование — это ключевой компонент непрерывной интеграции и развертывания высококачественного программного обеспечения. Модульные тесты позволяют сразу же узнать о возникшей проблеме.
Инструментирование для наблюдаемости
.NET поддерживает стандартные отраслевые методы инструментирования с помощью метрик, журналов и распределенных трассировок. Инструментирование — это код, добавляемый в проект программного обеспечения для записи того, что он делает. Затем эти сведения можно собирать в файлах, базах данных или в памяти и анализироваться, чтобы понять, как работает программа программного обеспечения. Это часто используется в рабочих средах для мониторинга проблем и их диагностики. Среда выполнения .NET имеет встроенную инструментирование, которая может быть дополнительно включена и API, которые позволяют добавлять пользовательские инструментирования, специализированные для вашего приложения.
Метрики
Метрики — это количественные показатели, записываемые в течение определенного периода времени для отслеживания производительности и работоспособности приложения. Метрики часто используются для создания оповещений при обнаружении потенциальных проблем. Метрики имеют очень низкие издержки на производительность, и многие службы настраивают их как данные телеметрии с постоянной поддержкой.
Журналы
Ведение журнала — это метод, в котором код инструментируется для создания журнала, записи интересных событий, произошедших во время выполнения программы. Часто базовый набор событий журнала настраивается по умолчанию, и для диагностики конкретных проблем можно включить более обширное ведение журнала по запросу. Издержки на производительность зависят от объема регистрируемого объема данных.
Распределенные трассировки
Распределенная трассировка — это специализированная форма ведения журнала, которая помогает локализовать сбои и проблемы с производительностью в приложениях, распределенных между несколькими компьютерами или процессами. Эта методика отслеживает запросы через приложение, сопоставляя работу различных компонентов приложения и отделяя ее от другой работы, которую приложение может выполнять для параллельных запросов. При необходимости можно отслеживать каждый запрос и выборку, чтобы привязать затраты на производительность.
Файлы дампа
Дамп — это файл, содержащий моментальный снимок процесса во время создания. Он может использоваться при проверке состояния приложения для отладки.
Символы
Символы представляют собой сопоставление между исходным кодом и двоичным кодом, который создается компилятором. Они обычно используются отладчиками .NET для разрешения исходных номеров строк, имен локальных переменных и других типов диагностических данных.
Сбор диагностики в контейнерах
Средства диагностики, используемые в средах Linux без контейнеров, позволяют также осуществлять и сбор диагностики в контейнерах. Требуется лишь частично изменить использование, чтобы обеспечить работу этих средств в контейнере Docker.
Глобальные средства диагностики в .NET Core
dotnet-counters
dotnet-counters — это средство мониторинга производительности для первого уровня мониторинга работоспособности и анализа производительности. Оно отслеживает значения счетчиков производительности, опубликованные с помощью API EventCounter. Например, можно быстро отслеживать использование ЦП или частоту возникновения исключений в приложении .NET Core.
dotnet-dump
dotnet-dump — это средство сбора и анализа дампов ядра Windows и Linux без собственного отладчика.
dotnet-gcdump
Средство dotnet-gcdump предоставляет способ сбора дампов сборщика мусора (GC) для активных процессов .NET.
dotnet-trace
.NET Core включает в себя EventPipe, с помощью которого предоставляются диагностические данные. Средство dotnet-trace позволяет использовать интересные данные профилирования из приложения, которые могут помочь в сценариях, когда вам нужно найти причину медленной работы приложений.
dotnet-stack
Средство dotnet-stack позволяет быстро печатать управляемые стеки для всех потоков в выполняющемся процессе .NET.
dotnet-symbol
dotnet-symbol скачивает файлы (символы, DAC/DBI, файлы узлов и т. д.), требуемые для открытия основного дампа или минидампа. Используйте это средство, если для отладки файла дампа, записанного на другом компьютере, требуются символы и модули.
PerfCollect — это скрипт bash, который можно использовать для сбора трассировок с помощью perf и LTTng для подробного анализа производительности приложений .NET, выполняющихся в дистрибутивах Linux.
Использование Web App Down, Crash Monitoring и Ask Genie для устранения неполадок. Используйте эти средства для мониторинга доступности приложений и платформ, выявления необработанных исключений, записи дампов памяти и стека вызовов, а также поиска областей для исследования и диагностики.
Создавайте комплексные решения в Microsoft Azure для создания Функции Azure, реализации веб-приложений и управления ими, разработке решений, использующих службу хранилища Azure, и т. д.