Как инициализировать пользовательский отладчик на мобильных платформах

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

Эта статья относится только к инициализации отладчика на мобильных платформах (iOS и Android) в .NET 11 и более поздних версиях. Он не применяется к NativeAOT.

Реализация и развертывание целевого компонента

Компонент отладчика на целевой стороне должен быть реализован в виде динамической библиотеки-профилировщика с точкой входа DllGetClassObject. Примеры реализаций см. в примерах профилировщика .NET.

Она должна быть развернута вместе с динамическими библиотеками libmscordbi и libmscordaccore в соответствии с пакетом собственной библиотеки целевой платформы, подписыванием кода и требованиями к загрузке.

Загрузите компонент на целевой стороне при запуске

Чтобы coreCLR загружал компонент в качестве профилировщика, предоставьте следующие параметры среды перед запуском среды выполнения:

Переменная среды Ценность
DOTNET_ENABLE_PROFILING 1
DOTNET_PROFILER {<profiler-CLSID>}
DOTNET_PROFILER_PATH <component-path>

Замените <profiler-CLSID> на GUID профилировщика вашего компонента и сохраните окружающие фигурные скобки. Замените <component-path> на путь к встроенному компоненту в развертывании целевого приложения.

Дополнительные сведения об этих параметрах см. в параметрах конфигурации среды выполнения для отладки и профилирования.

Используйте конфигурацию запуска приложения для платформы для предоставления этих параметров.

Note

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

Создание интерфейса отладчика

В целевом компоненте выполните следующую инициализацию:

  1. Загрузите libmscordbi динамическую библиотеку и вызовите его CoreCLRCreateCordbObjectEx экспорт. Запросите у возвращаемого объекта данные для ICorDebug.
  2. Вызовите ICorDebug::Initialize и зарегистрируйте обработчик управляемых событий с помощью ICorDebug::SetManagedHandler.
  3. Подключитесь к приложению с помощью ICorDebug::DebugActiveProcess.

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

После инициализации используйте ICorDebug интерфейсы отладчика как на других платформах Unix.