Поделиться через


Специализированные диагностика

Если отладка или наблюдаемость недостаточно, .NET поддерживает дополнительные механизмы диагностики.

Трассировка с помощью источника событий

Источник событий предоставляет возможность собирать подробные диагностические сведения о том, что происходит в процессах .NET. Она содержит сведения телеметрии для среды выполнения, GC, библиотек и кода приложения.

Данные источника событий можно собирать в процессе с помощью API или с внешними System.Diagnostics.Tracing.EventListener средствами диагностика, такими как Visual Studio, dotnet-monitor, dotnet-trace, PerfView и скрипты Perfcollect. Использование внешних средств для сбора данных источника событий в трассировках обычно используется для анализа производительности.

Сбор диагностики в контейнерах

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

Каналы событий

EventPipe — это компонент среды выполнения, который можно использовать для сбора данных трассировки, аналогичных ETW или LTTng. Цель EventPipe заключается в том, чтобы разработчики .NET могли легко отслеживать свои приложения .NET без необходимости полагаться на компоненты, зависящие от платформы, собственные ОС, такие как ETW или LTTng.

EventPipe — это механизм многих средств диагностики. Его можно использовать для использования событий, создаваемых средой выполнения, а также пользовательских событий, написанных с помощью EventSource.

Подавленное состояние

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

Символы

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

Порт диагностики

Среда выполнения .NET предоставляет конечную точку службы, которая позволяет другим процессам отправлять диагностические команды и получать ответы через канал IPC. Эта конечная точка называется портом диагностики. Команды можно отправлять в порт диагностики:

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

DiagnosticSource и DiagnosticListener

DiagnosticSource — это модуль, позволяющий инструментировать код для ведения журнала полезных данных в рабочей среде для использования в процессе инструментирования. Во время выполнения потребители могут динамически обнаруживать источники данных и подписываться на интересующие их источники. System.Diagnostics.DiagnosticSource был разработан для предоставления средствам внутрипроцессного доступа к богатым данным, таким как библиотеки инструментирования OpenTelemetry. Данные DiagnosticSource также могут быть исходящими через EventPipe, что позволяет собирать широкие диагностические данные с помощью выделенных средств. |

См. также