Método ICorProfilerInfo::SetILInstrumentedCodeMap
Define um mapa de código para a função especificada usando as entradas de mapa CIL (linguagem intermediária comum) especificadas.
Observação
No .NET Framework versão 2.0, chamar SetILInstrumentedCodeMap
em 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
[in] A ID da função para a qual definir o mapa de código.
fStartJit
[in] Um valor booliano que indica se a chamada ao método SetILInstrumentedCodeMap
é a primeira para um determinado FunctionID
. Definido fStartJit
como true
na primeira chamada para SetILInstrumentedCodeMap
, para um determinado FunctionID
e para false
daí em diante.
cILMapEntries
[in] O número de elementos na matriz cILMapEntries
.
rgILMapEntries
[em] Uma matriz de estruturas COR_IL_MAP, cada uma das quais especifica um deslocamento CIL.
Comentários
Um criador de perfil geralmente insere instruções no código-fonte de um método para instrumentá-lo (por exemplo, para notificar quando uma determinada linha de origem for 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 não modificado, e que cada novo deslocamento se refere ao deslocamento CIL dentro do novo código instrumentado. O mapa deve ser classificado em ordem crescente. Para que o passo a passo funcione corretamente, siga diretrizes a seguir:
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 PDB (banco de dados do programa) no mapa. O mapa não interpola entradas ausentes. Portanto, dado o mapa a seguir:
(0 velho, 0 novo)
(5 velho, 10 novo)
(9 velho, 20 novo)
Um deslocamento antigo de 0, 1, 2, 3 ou 4 será mapeado para um novo deslocamento de 0.
Um deslocamento antigo de 5, 6, 7 ou 8 será mapeado para um novo deslocamento de 10.
Um deslocamento antigo de 9 ou mais será mapeado para um novo deslocamento de 20.
Um novo deslocamento de 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9 será mapeado para o deslocamento antigo de 0.
Um novo deslocamento de 10, 11, 12, 13, 14, 15, 16, 17, 18 ou 19 será mapeado para o deslocamento antigo de 5.
Um novo deslocamento de 20 ou mais será mapeado para o deslocamento antigo de 9.
No .NET Framework 3.5 e versões anteriores, aloque a matriz rgILMapEntries
chamando o método CoTaskMemAlloc. Como o runtime assume a propriedade dessa memória, o criador de perfil não deve tentar liberá-la.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: Disponíveis desde 1.1