Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если отладка или наблюдаемость недостаточно, .NET поддерживает дополнительные механизмы диагностики.
Трассировка с помощью источника событий
Источник событий предоставляет возможность собирать подробные диагностические сведения о том, что происходит в процессах .NET. Она содержит сведения телеметрии для среды выполнения, GC, библиотек и кода приложения.
Данные источника событий можно собирать в процессе с помощью API или с внешними System.Diagnostics.Tracing.EventListener средствами диагностика, такими как Visual Studio, dotnet-monitor, dotnet-trace, PerfView и скрипты Perfcollect. Использование внешних инструментов для сбора данных источника событий в трассировках часто применяется для анализа производительности.
EventPipe
EventPipe — это компонент среды выполнения, который можно использовать для сбора данных трассировки, аналогичных ETW или LTTng. Цель EventPipe заключается в том, чтобы разработчики .NET могли легко отслеживать свои приложения .NET без необходимости полагаться на компоненты, зависящие от платформы, собственные ОС, такие как ETW или LTTng.
EventPipe — это механизм многих средств диагностики. Его можно использовать для использования событий, создаваемых средой выполнения, а также пользовательских событий, написанных с помощью EventSource.
Дампы
Дамп — это файл, содержащий моментальный снимок процесса во время создания дампа. Дампы могут быть полезны для изучения состояния вашего приложения в целях отладки.
Символы
Символы представляют собой сопоставление между исходным кодом и двоичным кодом, который создается компилятором. Они часто используются отладчиками .NET и средствами трассировки для разрешения номеров исходных строк, имен локальных переменных и других типов диагностических сведений.
Порт диагностики
Среда выполнения .NET предоставляет конечную точку службы, которая позволяет другим процессам отправлять диагностические команды и получать ответы через канал IPC. Эта конечная точка называется портом диагностики. Команды можно отправлять в порт диагностики:
- Захват дампа памяти.
- Запустите трассировку EventPipe.
- Запросите командную строку, используемую для запуска приложения.
DiagnosticSource и DiagnosticListener
DiagnosticSource — это модуль, который позволяет инструментировать код для журналирования подробных данных в рабочее время, чтобы использовать их в процессе, который был инструментирован. Во время выполнения потребители могут динамически обнаруживать источники данных и подписываться на интересующие их источники. System.Diagnostics.DiagnosticSource был разработан для предоставления инструментам для внутрипроцессного доступа к богатым данным, например, через библиотеки инструментирования OpenTelemetry. Данные DiagnosticSource также могут быть исходящими через EventPipe, что позволяет собирать широкие диагностические данные с помощью выделенных средств.
Сбор данных диагностики в контейнерах
Средства диагностики, используемые в средах Linux без контейнеров, позволяют также осуществлять и сбор диагностики в контейнерах. Требуется лишь частично изменить использование, чтобы обеспечить работу этих средств в контейнере Docker.