Compartilhar via


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

Confira também