Método ICorProfilerInfo::SetILInstrumentedCodeMap
Define um mapa de código para a função especificada usando as entradas de mapa de linguagem intermediária comum (CIL) especificadas.
Nota
No .NET Framework versão 2.0, chamar SetILInstrumentedCodeMap
um FunctionID
que representa uma função genérica em um domínio de aplicativo específico afetará todas as instâncias dessa função no domínio do aplicativo.
Sintaxe
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);
Parâmetros
functionId
[em] O ID da função para a qual definir o mapa de código.
fStartJit
[em] Um valor booleano que indica se a chamada para o SetILInstrumentedCodeMap
método é a primeira para um determinado FunctionID
. Definido fStartJit
para true
na primeira chamada para SetILInstrumentedCodeMap
um determinado FunctionID
, e para depois false
.
cILMapEntries
[em] O número de elementos na cILMapEntries
matriz.
rgILMapEntries
[em] Uma matriz de estruturas COR_IL_MAP, cada uma das quais especifica um deslocamento CIL.
Observações
Um criador de perfil geralmente insere instruções dentro do código-fonte de um método para instrumentar esse método (por exemplo, para notificar quando uma determinada linha de origem é atingida). SetILInstrumentedCodeMap
permite que um criador de perfil mapeie as instruções CIL originais para seus novos locais. Um criador de perfil pode usar o método ICorProfilerInfo::GetILToNativeMapping para obter o deslocamento CIL original para um determinado deslocamento nativo.
O depurador assumirá que cada deslocamento antigo se refere a um deslocamento CIL dentro do código CIL original e não modificado, e que cada novo deslocamento se refere ao deslocamento CIL dentro do novo código instrumentado. O mapa deve ser ordenado por ordem crescente. Para que a etapa funcione corretamente, siga estas diretrizes:
Não reordene o código CIL instrumentado.
Não remova o código CIL original.
Inclua entradas para todos os pontos de sequência do arquivo de banco de dados do programa (PDB) no mapa. O mapa não interpola entradas ausentes. Assim, dado o seguinte mapa:
(0 antigo, 0 novo)
(5 antigos, 10 novos)
(9 antigos, 20 novos)
Um deslocamento antigo de 0, 1, 2, 3 ou 4 será mapeado para o novo deslocamento 0.
Um deslocamento antigo de 5, 6, 7 ou 8 será mapeado para o novo deslocamento 10.
Um deslocamento antigo de 9 ou superior será mapeado para o novo deslocamento 20.
Um novo deslocamento de 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9 será mapeado para o antigo deslocamento 0.
Um novo deslocamento de 10, 11, 12, 13, 14, 15, 16, 17, 18 ou 19 será mapeado para o antigo deslocamento 5.
Um novo deslocamento de 20 ou superior será mapeado para o antigo deslocamento 9.
No .NET Framework 3.5 e versões anteriores, você aloca a rgILMapEntries
matriz chamando o método CoTaskMemAlloc . Como o tempo de execução assume a propriedade dessa memória, o criador de perfil não deve tentar liberá-la.
Requisitos
Plataformas: Consulte Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: Disponível desde 1.1