Partilhar via


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

Consulte também