ICorProfilerInfo::SetILInstrumentedCodeMap-Methode
Legt eine Codezuordnung für die angegebene Funktion mithilfe der angegebenen CIL-Zuordnungseinträge (Common Intermediate Language) fest.
Hinweis
In Version 2.0 von .NET Framework wirkt sich das Aufrufen von SetILInstrumentedCodeMap
für eine Funktions-ID (FunctionID
), die eine generische Funktion in einer bestimmten Anwendungsdomäne darstellt, auf alle Instanzen dieser Funktion in der Anwendungsdomäne aus.
Syntax
HRESULT SetILInstrumentedCodeMap(
[in] FunctionID functionId,
[in] BOOL fStartJit,
[in] ULONG cILMapEntries,
[in, size_is(cILMapEntries)] COR_IL_MAP rgILMapEntries[]);
Parameter
functionId
[in] Die ID der Funktion, für die die Codezuordnung festgelegt werden soll.
fStartJit
[in] Ein boolescher Wert, der angibt, ob der Aufruf der SetILInstrumentedCodeMap
-Methode der erste Aufruf für eine bestimmte Funktions-ID (FunctionID
) ist. Im ersten Aufruf von SetILInstrumentedCodeMap
für eine bestimmte Funktions-ID (FunctionID
) muss fStartJit
auf true
festgelegt werden (danach auf false
).
cILMapEntries
[in] Die Anzahl von Elementen im cILMapEntries
-Array.
rgILMapEntries
[in] Ein Array von COR_IL_MAP Strukturen, die jeweils einen CIL-Offset angeben.
Hinweise
Ein Profiler fügt häufig Anweisungen in den Quellcode einer Methode ein, um diese Methode zu instrumentieren (etwa, um darüber zu informieren, dass eine bestimmte Quellzeile erreicht wurde). SetILInstrumentedCodeMap
ermöglicht es einem Profiler, die ursprünglichen CIL-Anweisungen ihren neuen Speicherorten zuzuordnen. Ein Profiler kann die ICorProfilerInfo::GetILToNativeMapping-Methode verwenden, um den ursprünglichen CIL-Offset für einen bestimmten nativen Offset abzurufen.
Der Debugger geht davon aus, dass jeder alte Offset auf einen CIL-Offset im ursprünglichen, unveränderten CIL-Code verweist und dass jeder neue Offset auf den CIL-Offset im neuen instrumentierten Code verweist. Die Zuordnung muss aufsteigend sortiert sein. Halten Sie sich an folgende Richtlinien, damit die schrittweise Ausführung ordnungsgemäß funktioniert:
Ordnen Sie den instrumentierten CIL-Code nicht neu an.
Entfernen Sie nicht den ursprünglichen CIL-Code.
Schließen Sie Einträge für alle Sequenzpunkte aus der PDB-Datei (Programmdatenbank) in die Zuordnung ein. Fehlende Einträge werden von der Zuordnung nicht interpoliert. Betrachten Sie die folgende Zuordnung:
(0 alt, 0 neu)
(5 alt, 10 neu)
(9 alt, 20 neu)
Der alte Offset 0, 1, 2, 3 oder 4 wird dem neuen Offset 0 zugeordnet.
Der alte Offset 5, 6, 7 oder 8 wird dem neuen Offset 10 zugeordnet.
Der alte Offset 9 oder höher wird dem neuen Offset 20 zugeordnet.
Der neue Offset 0, 1, 2, 3, 4, 5, 6, 7, 8 oder 9 wird dem alten Offset 0 zugeordnet.
Der neue Offset 10, 11, 12, 13, 14, 15, 16, 17, 18 oder 19 wird dem alten Offset 5 zugeordnet.
Der neue Offset 20 oder höher wird dem alten Offset 9 zugeordnet.
Bis .NET Framework 3.5 wird das rgILMapEntries
-Array durch Aufrufen der CoTaskMemAlloc-Methode zugeordnet. Da die Runtime den Besitz dieses Arbeitsspeichers übernimmt, darf der Profiler nicht versuchen, ihn freizugeben.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: CorProf.idl, CorProf.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: Seit Version 1.1 verfügbar