ICorProfilerInfo::SetILInstrumentedCodeMap (Método)

Establece un mapa de código para la función especificada mediante las entradas de mapa del lenguaje intermedio común (CIL) especificadas.

Nota:

En la versión 2.0 de .NET Framework, llamar a SetILInstrumentedCodeMap en un FunctionID que representa una función genérica en un dominio de aplicación determinado afectará a todas las instancias de esa función en el dominio de aplicación.

Sintaxis

HRESULT SetILInstrumentedCodeMap(
    [in]  FunctionID functionId,
    [in]  BOOL       fStartJit,
    [in]  ULONG      cILMapEntries,
    [in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);

Parámetros

functionId
[in] Identificador de la función para la que se va a establecer el mapa de código.

fStartJit
[in] Valor booleano que indica si la llamada al método SetILInstrumentedCodeMap es la primera para un FunctionID determinado. Establezca fStartJit en true en la primera llamada a SetILInstrumentedCodeMap para un FunctionID determinado y en false a partir de entonces.

cILMapEntries
[in] El valor de este parámetro se corresponde con el número de elementos que se incluyen en la matriz cILMapEntries.

rgILMapEntries
[in] Matriz de COR_IL_MAP estructuras, cada una de las cuales especifica un desplazamiento CIL.

Comentarios

Un generador de perfiles suele insertar instrucciones dentro del código fuente de un método para instrumentar ese método (por ejemplo, para notificar cuándo se alcanza una línea de origen determinada). SetILInstrumentedCodeMap permite a un generador de perfiles asignar las instrucciones de la CIL original a sus nuevas ubicaciones. Un generador de perfiles puede usar el método ICorProfilerInfo::GetILToNativeMapping para obtener el desplazamiento de la CIL original para un desplazamiento nativo determinado.

El depurador asume que cada desplazamiento anterior hace referencia a un desplazamiento CIL dentro del código CIL original, sin modificar y que cada nuevo desplazamiento hace referencia al desplazamiento de la CIL dentro del nuevo código instrumentado. El mapa debe ordenarse en orden creciente. Para que la ejecución paso a paso funcione correctamente, siga estas instrucciones:

  • No reordene el código CIL instrumentado.

  • No quite el código CIL original.

  • Incluya entradas para asignar todos los puntos de secuencia del archivo de base de datos de programa (PDB) en el mapa. El mapa no interpola las entradas que faltan. Dado el mapa siguiente:

    (0 antiguo, 0 nuevo)

    (5 antiguos, 10 nuevos)

    (9 antiguos, 20 nuevos)

    • Un desplazamiento antiguo de 0, 1, 2, 3 o 4 se asignará a un nuevo desplazamiento de 0.

    • Un desplazamiento antiguo de 5, 6, 7 o 8 se asignará a un nuevo desplazamiento de 10.

    • Un desplazamiento antiguo de 9 o superior se asignará a un nuevo desplazamiento de 20.

    • Un desplazamiento nuevo de 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9 se asignará a un desplazamiento antiguo de 0.

    • Un desplazamiento nuevo de 10, 11, 12, 13, 14, 15, 16, 17, 18 o 19 se asignará a un desplazamiento antiguo de 5.

    • Un desplazamiento nuevo de 20 o superior se asignará a un desplazamiento antiguo de 9.

En .NET Framework 3.5 y versiones anteriores, se asigna la rgILMapEntries matriz mediante una llamada al método CoTaskMemAlloc . Dado que el tiempo de ejecución toma posesión de esta memoria, el generador de perfiles no debe intentar liberarla.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: disponible a partir de la versión 1.1

Consulte también