Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os depuradores .NET personalizados são normalmente executados num processo separado. As plataformas móveis restringem ou proíbem a criação desses processos, pelo que o componente de depuração personalizado no lado de destino deve, em vez disso, ser carregado no processo da aplicação.
Este artigo aplica-se apenas à inicialização de depuradores em plataformas móveis (iOS e Android) em versões .NET 11 e posteriores. Não se aplica ao NativeAOT.
Desenvolver e implementar o componente do lado de destino
O componente de depuração do lado de destino deve ser implementado como uma biblioteca dinâmica de criação de perfil com ponto de entrada DllGetClassObject. Para exemplos de implementação, consulte os exemplos do criador de perfil do .NET.
Deve ser implementado em conjunto com as bibliotecas dinâmicas libmscordbi e libmscordaccore como parte da aplicação, em conformidade com os requisitos nativos de empacotamento, assinatura de código e carregamento da plataforma alvo.
Carregar o componente do lado de destino na inicialização
Para que o CoreCLR carregue o seu componente como profiler, forneça as seguintes definições de ambiente antes do início do runtime:
| Variável de ambiente | Value |
|---|---|
DOTNET_ENABLE_PROFILING |
1 |
DOTNET_PROFILER |
{<profiler-CLSID>} |
DOTNET_PROFILER_PATH |
<component-path> |
Substitua <profiler-CLSID> pelo GUID do criador de perfis do seu componente e mantenha as chavetas envolventes. Substitua <component-path> pelo caminho para o componente nativo na implementação da aplicação de destino.
Para detalhes sobre estas definições, consulte Opções de configuração em tempo de execução para depuração e perfil.
Use a configuração de lançamento da sua aplicação para fornecer estas definições.
Note
Embora este procedimento utilize o mecanismo do profiler para inicializar um depurador, não estabelece suporte de propósito geral para profilers de terceiros em plataformas móveis.
Criar a interface do depurador
No componente do lado do alvo, execute a seguinte inicialização:
- Carrega
libmscordbia biblioteca dinâmica e chama a exportaçãoCoreCLRCreateCordbObjectEx. Consultar o objeto devolvido relativamente aICorDebug. - Chame ICorDebug::Initialize e registe o seu handler de eventos geridos com ICorDebug::SetManagedHandler.
- Anexe à aplicação com ICorDebug::D ebugActiveProcess.
Para não perder eventos iniciais de carregamento de módulos e de arranque, coordene a associação com a inicialização do runtime para que a execução gerida não prossiga antes de DebugActiveProcess estar concluído.
Após a inicialização, utilize as interfaces do depurador ICorDebug como nas outras plataformas Unix.