Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Настраиваемые отладчики .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
Хотя в этой процедуре для инициализации отладчика используется механизм профилировщика, она не обеспечивает поддержку общего назначения для сторонних профилировщиков на мобильных платформах.
Создание интерфейса отладчика
В целевом компоненте выполните следующую инициализацию:
- Загрузите
libmscordbiдинамическую библиотеку и вызовите егоCoreCLRCreateCordbObjectExэкспорт. Запросите у возвращаемого объекта данные дляICorDebug. - Вызовите ICorDebug::Initialize и зарегистрируйте обработчик управляемых событий с помощью ICorDebug::SetManagedHandler.
- Подключитесь к приложению с помощью ICorDebug::DebugActiveProcess.
Чтобы не пропустить ранние события загрузки модулей и запуска, согласуйте подключение с запуском среды выполнения, чтобы управляемое выполнение не продолжалось до завершения DebugActiveProcess.
После инициализации используйте ICorDebug интерфейсы отладчика как на других платформах Unix.