Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os depuradores de .NET personalizados normalmente são hospedados em um processo separado. As plataformas móveis restringem ou proíbem a criação desses processos, de modo que o componente personalizado do depurador no lado de destino deve ser carregado no processo da aplicação.
Este artigo se aplica somente à inicialização do depurador em plataformas móveis (iOS e Android) em versões .NET 11 e posteriores. Ele não se aplica ao NativeAOT.
Implementar e implantar o componente no lado de destino
O componente do depurador no lado de destino deve ser implementado como uma biblioteca dinâmica de criador de perfil com um ponto de entrada DllGetClassObject. Para ver exemplos de implementação, consulte os exemplos de profiler do .NET.
Ela deve ser implantada junto com bibliotecas dinâmicas libmscordbi e libmscordaccore como parte do aplicativo em conformidade com os requisitos de empacotamento, assinatura de código e carregamento da biblioteca nativa da plataforma de destino.
Carregar o componente do lado de destino na inicialização
Para que o CoreCLR carregue seu componente como um criador de perfil, forneça as seguintes configurações de ambiente antes do runtime ser iniciado:
| Variável de ambiente | Valor |
|---|---|
DOTNET_ENABLE_PROFILING |
1 |
DOTNET_PROFILER |
{<profiler-CLSID>} |
DOTNET_PROFILER_PATH |
<component-path> |
Substitua <profiler-CLSID> pelo GUID do criador de perfil do componente e mantenha as chaves delimitadoras. Substitua <component-path> pelo caminho até o componente nativo na implantação do aplicativo de destino.
Para obter detalhes sobre essas configurações, consulte as opções de configuração do Runtime para depuração e criação de perfil.
Use a configuração de inicialização de aplicativo da plataforma para fornecer essas configurações.
Note
Embora este procedimento use o mecanismo de criação de perfil para inicializar um depurador, ele não estabelece suporte genérico para ferramentas de criação de perfil de terceiros em plataformas móveis.
Criar a interface do depurador
No componente do lado do destino, execute a seguinte inicialização:
- Carregue a biblioteca dinâmica
libmscordbie chame sua respectiva exportaçãoCoreCLRCreateCordbObjectEx. Consulte o objeto retornado paraICorDebug. - Chame ICorDebug::Initialize e registre seu manipulador de eventos gerenciados com ICorDebug::SetManagedHandler.
- Anexe-se ao aplicativo com ICorDebug::DebugActiveProcess.
Para evitar perder eventos iniciais de carregamento de módulos e de inicialização, coordene a anexação com a inicialização do runtime para que a execução gerenciada não prossiga antes que DebugActiveProcess seja concluído.
Após a inicialização, use as interfaces do depurador ICorDebug como em outras plataformas Unix.