SDK-Hilfsprogramme für das Debuggen
Diese Funktionen und Deklarationen sind globale Hilfsfunktionen zum Implementieren von Debugmodulen, Ausdrucksauswertern und Symbolanbietern in C++.
Hinweis
Derzeit gibt es keine verwalteten Versionen dieser Funktionen und Deklarationen.
Damit Debugmodule, Ausdrucksauswerter und Symbolanbieter von Visual Studio verwendet werden können, müssen sie registriert werden. Dies geschieht durch Festlegen von Registrierungsunterschlüsseln und Einträgen, die auch als "Einstellungsmetriken" bezeichnet werden. Die folgenden globalen Funktionen sind so konzipiert, dass der Prozess der Aktualisierung dieser Metriken erleichtert wird. Weitere Informationen zum Layout jedes Registrierungsunterschlüssels, der von diesen Funktionen aktualisiert wird, finden Sie im Abschnitt zu Registrierungsspeicherorten.
Allgemeine Metrikfunktionen
Dies sind allgemeine Funktionen, die von Debugmodulen verwendet werden. Spezielle Funktionen für Ausdrucksauswerter und Symbolanbieter werden später ausführlich beschrieben.
GetMetric-Methode
Ruft einen Metrikwert aus der Registrierung ab.
HRESULT GetMetric(
LPCWSTR pszMachine,
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
DWORD * pdwValue,
LPCWSTR pszAltRoot
);
Parameter | Beschreibung |
---|---|
pszMachine | [in] Name eines möglicherweise Remotecomputers, dessen Register geschrieben werden (NULL bedeutet lokaler Computer). |
pszType | [in] Einer der Metriktypen. |
guidSection | [in] GUID eines bestimmten Moduls, Evaluators, Ausnahme usw. Dadurch wird ein Unterabschnitt unter einem Metriktyp für ein bestimmtes Element angegeben. |
pszMetric | [in] Die zu erhaltende Metrik. Dies entspricht einem bestimmten Wertnamen. |
pdwValue | [in] Der Speicherort des Werts aus der Metrik. Es gibt mehrere Varianten von GetMetric, die ein DWORD (wie in diesem Beispiel), einen BSTR, eine GUID oder ein Array von GUIDs zurückgeben können. |
pszAltRoot | [in] Ein alternativer Registrierungsstamm, der verwendet werden soll. Legen Sie diese Einstellung fest, NULL um die Standardeinstellung zu verwenden. |
SetMetric-Methode
Legt den angegebenen Metrikwert in der Registrierung fest.
HRESULT SetMetric(
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
const DWORD dwValue,
bool fUserSpecific,
LPCWSTR pszAltRoot
);
Parameter | Beschreibung |
---|---|
pszType | [in] Einer der Metriktypen. |
guidSection | [in] GUID eines bestimmten Moduls, Evaluators, Ausnahme usw. Dadurch wird ein Unterabschnitt unter einem Metriktyp für ein bestimmtes Element angegeben. |
pszMetric | [in] Die zu erhaltende Metrik. Dies entspricht einem bestimmten Wertnamen. |
dwValue | [in] Der Speicherort des Werts in der Metrik. Es gibt mehrere Varianten von SetMetric, die ein DWORD (in diesem Beispiel), einen BSTR, eine GUID oder ein Array von GUIDs speichern können. |
fUserSpecific | [in] TRUE, wenn die Metrik benutzerspezifisch ist und in die Struktur des Benutzers anstelle der lokalen Computerstruktur geschrieben werden soll. |
pszAltRoot | [in] Ein alternativer Registrierungsstamm, der verwendet werden soll. Legen Sie diese Einstellung fest, NULL um die Standardeinstellung zu verwenden. |
RemoveMetric-Methode
Entfernt die angegebene Metrik aus der Registrierung.
HRESULT RemoveMetric(
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
LPCWSTR pszAltRoot
);
Parameter | Beschreibung |
---|---|
pszType | [in] Einer der Metriktypen. |
guidSection | [in] GUID eines bestimmten Moduls, Evaluators, Ausnahme usw. Dadurch wird ein Unterabschnitt unter einem Metriktyp für ein bestimmtes Element angegeben. |
pszMetric | [in] Die zu entfernende Metrik. Dies entspricht einem bestimmten Wertnamen. |
pszAltRoot | [in] Ein alternativer Registrierungsstamm, der verwendet werden soll. Legen Sie diese Einstellung fest, NULL um die Standardeinstellung zu verwenden. |
EnumMetricSections-Methode
Listet die verschiedenen Metrikabschnitte in der Registrierung auf.
HRESULT EnumMetricSections(
LPCWSTR pszMachine,
LPCWSTR pszType,
GUID * rgguidSections,
DWORD * pdwSize,
LPCWSTR pszAltRoot
);
Parameter | Beschreibung |
---|---|
pszMachine | [in] Name eines möglicherweise Remotecomputers, dessen Register geschrieben werden (NULL bedeutet lokaler Computer). |
pszType | [in] Einer der Metriktypen. |
rgguidSections | [in, out] Vorallocated array of GUIDs to be filled in. |
pdwSize | [in] Die maximale Anzahl von GUIDs, die im rgguidSections Array gespeichert werden können. |
pszAltRoot | [in] Ein alternativer Registrierungsstamm, der verwendet werden soll. Legen Sie diese Einstellung fest, NULL um die Standardeinstellung zu verwenden. |
Ausdrucksauswertungsfunktionen
Funktion | Beschreibung |
---|---|
GetEEMetric | Ruft einen Metrikwert aus der Registrierung ab. |
SetEEMetric | Legt den angegebenen Metrikwert in der Registrierung fest. |
RemoveEEMetric | Entfernt die angegebene Metrik aus der Registrierung. |
GetEEMetricFile | Ruft einen Dateinamen aus der angegebenen Metrik ab und lädt ihn, und gibt den Dateiinhalt als Zeichenfolge zurück. |
Ausnahmefunktionen
Funktion | Beschreibung |
---|---|
GetExceptionMetric | Ruft einen Metrikwert aus der Registrierung ab. |
SetExceptionMetric | Legt den angegebenen Metrikwert in der Registrierung fest. |
RemoveExceptionMetric | Entfernt die angegebene Metrik aus der Registrierung. |
RemoveAllExceptionMetrics | Entfernt alle Ausnahmemetriken aus der Registrierung. |
Symbolanbieterfunktionen
Funktion | Beschreibung |
---|---|
GetSPMetric | Ruft einen Metrikwert aus der Registrierung ab. |
SetSPMetric | Legt den angegebenen Metrikwert in der Registrierung fest. |
RemoveSPMetric | Entfernt die angegebene Metrik aus der Registrierung. |
Aufzählungsfunktionen
Funktion | Beschreibung |
---|---|
EnumMetricSections | Listet alle Metriken für einen angegebenen Metriktyp auf. |
EnumDebugEngine | Listet die registrierten Debugmodule auf. |
EnumEEs | Listet die registrierten Ausdrucksauswerter auf. |
EnumExceptionMetrics | Listet alle Ausnahmemetriken auf. |
Metrikdefinitionen
Diese Definitionen können für vordefinierte Metriknamen verwendet werden. Die Namen entsprechen verschiedenen Registrierungsschlüsseln und Wertnamen und sind alle als breite Zeichenfolgen definiert: z. B extern LPCWSTR metrictypeEngine
. .
Vordefinierte Metriktypen | Beschreibung: Der Basisschlüssel für.... |
---|---|
metrictypeEngine | Alle Debugmodulmetriken. |
metrictypePortSupplier | Alle Metriken des Portanbieters. |
metrictypeException | Alle Ausnahmemetriken. |
metricttypeEEExtension | Alle Ausdrucksauswertungserweiterungen. |
Debugmoduleigenschaften | Beschreibung |
---|---|
metricAddressBP | Auf "Nonzero" festgelegt, um die Unterstützung für Adresstrennpunkte anzugeben. |
metricAlwaysLoadLocal | Legen Sie diese Einstellung auf "nonzero" fest, um das Debugmodul immer lokal zu laden. |
metricLoadInDebuggeeSession | NICHT VERWENDET |
metricLoadedByDebuggee | Legen Sie diese Einstellung auf "nonzero" fest, um anzugeben, dass das Debugmodul immer mit oder durch das zu debuggende Programm geladen wird. |
metricAttach | Legen Sie diese Einstellung auf "nonzero" fest, um die Unterstützung für Anlagen an vorhandene Programme anzugeben. |
metricCallStackBP | Legen Sie diesen Satz auf "nonzero" fest, um die Unterstützung für Anrufstapel-Haltepunkte anzugeben. |
metricConditionalBP | Legen Sie diese Einstellung auf "nonzero" fest, um die Unterstützung für die Einstellung von bedingten Haltepunkten anzugeben. |
metricDataBP | Auf "Nonzero" festgelegt, um die Unterstützung für die Einstellung von Haltepunkten für Änderungen in Daten anzugeben. |
metricDisassembly | Auf "Nonzero" festgelegt, um die Unterstützung für die Produktion einer Demontageauflistung anzugeben. |
metricDumpWriting | Legen Sie auf "nonzero" fest, um die Unterstützung für das Schreiben von Dumps (das Dumping des Speichers auf ein Ausgabegerät) anzugeben. |
metricENC | Auf "Nonzero" festgelegt, um die Unterstützung für "Bearbeiten" und "Weiter" anzugeben. Hinweis: Ein benutzerdefiniertes Debugmodul sollte dies niemals festlegen oder immer auf 0 festlegen. |
metricExceptions | Legen Sie diese Einstellung auf "nonzero" fest, um die Unterstützung für Ausnahmen anzugeben. |
metricFunctionBP | Legen Sie diesen Wert auf "nonzero" fest, um die Unterstützung für benannte Haltepunkte anzugeben (Haltepunkte, die beim Aufrufen eines bestimmten Funktionsnamens unterbrechen). |
metricHitCountBP | Legen Sie diesen Wert auf "nonzero" fest, um die Unterstützung für die Einstellung von "Hitpoint"-Haltepunkten anzugeben (Haltepunkte, die nur ausgelöst werden, nachdem eine bestimmte Anzahl von Malen getroffen wurde). |
metricJITDebug | Wird auf "nonzero" festgelegt, um die Unterstützung für das Just-in-Time-Debugging anzugeben (der Debugger wird gestartet, wenn eine Ausnahme in einem ausgeführten Prozess auftritt). |
metricMemory | NICHT VERWENDET |
metricPortSupplier | Legen Sie dies auf die CLSID des Portanbieters fest, wenn eine implementiert ist. |
metricRegisters | NICHT VERWENDET |
metricSetNextStatement | Legen Sie auf "nonzero" fest, um die Unterstützung für das Festlegen der nächsten Anweisung anzugeben (wodurch die Ausführung von Zwischenanweisungen übersprungen wird). |
metricSuspendThread | Legen Sie die Einstellung auf "nonzero" fest, um die Unterstützung für die Ausführung von Threads anzugeben. |
metricWarnIfNoSymbols | Legen Sie diese Einstellung auf "nonzero" fest, um anzugeben, dass der Benutzer benachrichtigt werden soll, wenn keine Symbole vorhanden sind. |
metricProgramProvider | Legen Sie dies auf die CLSID des Programmanbieters fest. |
metricAlwaysLoadProgramProviderLocal | Legen Sie dies auf "nonzero" fest, um anzugeben, dass der Programmanbieter immer lokal geladen werden soll. |
metricEngineCanWatchProcess | Legen Sie dies auf "nonzero" fest, um anzugeben, dass das Debugmodul auf Prozessereignisse anstelle des Programmanbieters überwacht. |
metricRemoteDebugging | Legen Sie dies auf "nonzero" fest, um die Unterstützung für das Remotedebugging anzugeben. |
metricEncUseNativeBuilder | Legen Sie dies auf "nonzero" fest, um anzugeben, dass der Bearbeitungs- und Fortsetzungs-Manager die encbuild.dll des Debugmoduls zum Erstellen für "Bearbeiten" und "Weiter" verwenden soll. Hinweis: Ein benutzerdefiniertes Debugmodul sollte dies niemals festlegen oder immer auf 0 festlegen. |
metricLoadUnderWOW64 | Legen Sie dies auf "nonzero" fest, um anzugeben, dass das Debugmodul beim Debuggen eines 64-Bit-Prozesses im Debugprozess unter WOW geladen werden soll. andernfalls wird das Debugmodul im Visual Studio-Prozess geladen (das unter WOW64 ausgeführt wird). |
metricLoadProgramProviderUnderWOW64 | Legen Sie dies auf "nonzero" fest, um anzugeben, dass der Programmanbieter beim Debuggen eines 64-Bit-Prozesses unter WOW im Debuggeeprozess geladen werden soll; andernfalls wird sie im Visual Studio-Prozess geladen. |
metricStopOnExceptionCrossingManagedBoundary | Legen Sie diesen Wert auf "nonzero" fest, um anzugeben, dass der Prozess beendet werden soll, wenn eine unbehandelte Ausnahme über verwaltete/nicht verwaltete Codegrenzen hinweg ausgelöst wird. |
metricAutoSelectPriority | Legen Sie dies auf eine Priorität für die automatische Auswahl des Debugmoduls fest (höhere Werte entsprechen höherer Priorität). |
metricAutoSelectIncompatibleList | Registrierungsschlüssel mit Einträgen, die GUIDs für Debugmodule angeben, die in der automatischen Auswahl ignoriert werden sollen. Diese Einträge sind eine Zahl (0, 1, 2 usw.) mit einer GUID, die als Zeichenfolge ausgedrückt wird. |
metricIncompatibleList | Registrierungsschlüssel mit Einträgen, die GUIDs für Debugmodule angeben, die mit diesem Debugmodul nicht kompatibel sind. |
metricDisableJITOptimization | Legen Sie dies auf "nonzero" fest, um anzugeben, dass Just-in-Time-Optimierungen (für verwalteten Code) beim Debuggen deaktiviert werden sollen. |
Ausdrucksauswertungseigenschaften | Beschreibung |
---|---|
metricEngine | Dies enthält die Anzahl der Debugmodule, die den angegebenen Ausdrucksauswerter unterstützen. |
metricPreloadModules | Legen Sie diesen Wert auf "nonzero" fest, um anzugeben, dass Module vorgeladen werden sollen, wenn ein Ausdrucks-Evaluator für ein Programm gestartet wird. |
metricThisObjectName | Legen Sie dies auf den Objektnamen "this" fest. |
Eigenschaften der Ausdrucksauswertungserweiterung | Beschreibung |
---|---|
metricExtensionDll | Name der DLL, die diese Erweiterung unterstützt. |
metricExtensionRegistersSupported | Liste der unterstützten Register. |
metricExtensionRegistersEntryPoint | Einstiegspunkt für den Zugriff auf Register. |
metricExtensionTypesSupported | Liste der unterstützten Typen. |
metricExtensionTypesEntryPoint | Einstiegspunkt für den Zugriff auf Typen. |
Eigenschaften des Portanbieters | Beschreibung |
---|---|
metricPortPickerCLSID | Die CLSID der Portauswahl (ein Dialogfeld, das der Benutzer verwenden kann, um Ports auszuwählen und Ports zum Debuggen hinzuzufügen). |
metricDisallowUserEnteredPorts | Nonzero, wenn die vom Benutzer eingegebenen Ports dem Portlieferanten nicht hinzugefügt werden können (dadurch wird das Dialogfeld "Portauswahl" im Wesentlichen schreibgeschützt). |
metricPidBase | Die Basisprozess-ID, die vom Portanbieter beim Zuordnen von Prozess-IDs verwendet wird. |
Vordefinierte SP Store-Typen | Beschreibung |
---|---|
storetypeFile | Die Symbole werden in einer separaten Datei gespeichert. |
storetypeMetadata | Die Symbole werden als Metadaten in einer Assembly gespeichert. |
Verschiedene Eigenschaften | Beschreibung |
---|---|
metricShowNonUserCode | Legen Sie dies auf "nonzero" fest, um Nichtbenutzercode anzuzeigen. |
metricJustMyCodeStepping | Legen Sie dies auf "nonzero" fest, um anzugeben, dass das Schritten nur im Benutzercode erfolgen kann. |
metricCLSID | CLSID für ein Objekt eines bestimmten Metriktyps. |
metricName | Benutzerfreundlicher Name für ein Objekt eines bestimmten Metriktyps. |
metricLanguage | Sprachname. |
Registrierungsspeicherorte
Die Metriken werden aus der Registrierung gelesen und in die VisualStudio
Registrierung geschrieben, insbesondere im Unterschlüssel.
Hinweis
Meistens werden die Metriken in den HKEY_LOCAL_MACHINE Schlüssel geschrieben. Manchmal ist HKEY_CURRENT_USER jedoch der Zielschlüssel. Dbgmetric.lib behandelt beide Schlüssel. Beim Abrufen einer Metrik durchsucht sie zuerst HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE. Wenn eine Metrik festgelegt wird, gibt ein Parameter an, welcher Schlüssel der obersten Ebene verwendet werden soll.
[Registrierungsschlüssel]\
Software
\
Microsoft
\
VisualStudio
\
[Versionsstamm]\
[Metrikstamm]\
[Metriktyp]\
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
Platzhalter | Beschreibung |
---|---|
[Registrierungsschlüssel] | HKEY_CURRENT_USER oder HKEY_LOCAL_MACHINE |
[Versionsstamm] | Die Version von Visual Studio (z. B 7.0 . , , 7.1 oder 8.0 ). Dieser Stamm kann jedoch auch mit dem Switch /rootsuffix zu devenv.exe geändert werden. Bei VSIP ist dieser Modifizierer in der Regel "Exp", sodass der Versionsstamm z. B. 8.0Exp wäre. |
[Metrikstamm] | Dies ist entweder AD7Metrics oder AD7Metrics(Debug) , je nachdem, ob die Debugversion von dbgmetric.lib verwendet wird. Hinweis: Unabhängig davon, ob dbgmetric.lib verwendet wird, sollte diese Benennungskonvention eingehalten werden, wenn Sie Unterschiede zwischen Debug- und Releaseversionen haben, die in der Registrierung widerzuspiegeln sind. |
[Metriktyp] | Der Typ der zu schreibenden Metrik: Engine , , ExpressionEvaluator , SymbolProvider , usw. Diese sind alle wie in dbgmetric.h als metricTypeXXXX definiert, wobei XXXX es sich um den spezifischen Typnamen handelt. |
[Metrik] | Der Name eines Eintrags, dem ein Wert zugewiesen werden soll, um die Metrik festzulegen. Die tatsächliche Organisation der Metriken hängt vom Metriktyp ab. |
[Metrikwert] | Der Wert, der der Metrik zugewiesen ist. Der Typ, über den der Wert verfügen soll (Zeichenfolge, Zahl usw.), hängt von der Metrik ab. |
Hinweis
Alle GUIDs werden im Format von {GUID}
. Beispielsweise {123D150B-FA18-461C-B218-45B3E4589F9B}
.
Debugmodule
Es folgt die Organisation der Metriken der Debugmodule in der Registrierung. Engine
ist der Name des Metriktyps für ein Debugmodul und entspricht [metrischem Typ] in der obigen Registrierungsunterstruktur.
Engine
\
[Modul-GUID]\
CLSID
= [Klassen-GUID]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
PortSupplier
\
0
= [Port supplier guid]
1
= [Port supplier guid]
Platzhalter | Beschreibung |
---|---|
[Modul-GUID] | Die GUID des Debugmoduls. |
[Klassen-GUID] | Die GUID der Klasse, die dieses Debugmodul implementiert. |
[Port supplier guid] | Die GUID des Portanbieters, falls vorhanden. Viele Debugmodule verwenden den Standardportanbieter und geben daher keinen eigenen Lieferanten an. In diesem Fall ist der Unterschlüssel PortSupplier nicht vorhanden. |
Portanbieter
Nachfolgend sehen Sie die Organisation der Metriken des Portanbieters in der Registrierung. PortSupplier
ist der metrische Typname für einen Portlieferanten und entspricht [Metriktyp].
PortSupplier
\
[Port supplier guid]\
CLSID
= [Klassen-GUID]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
Platzhalter | Beschreibung |
---|---|
[Port supplier guid] | Die GUID des Portanbieters |
[Klassen-GUID] | Die GUID der Klasse, die diesen Portanbieter implementiert |
Symbolanbieter
Nachfolgend sehen Sie die Organisation der Symbol-Lieferantenmetriken in der Registrierung. SymbolProvider
ist der Metriktypname für den Symbolanbieter und entspricht [Metriktyp].
SymbolProvider
\
[Symbolanbieter-GUID]\
file
\
CLSID
= [Klassen-GUID]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
metadata
\
CLSID
= [Klassen-GUID]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
Platzhalter | Beschreibung |
---|---|
[Symbolanbieter-GUID] | Die GUID des Symbolanbieters |
[Klassen-GUID] | Die GUID der Klasse, die diesen Symbolanbieter implementiert |
Ausdrucksauswerter
Es folgt die Organisation der Metriken des Ausdrucks evaluator in der Registrierung. ExpressionEvaluator
ist der metrische Typname für den Ausdrucksauswerter und entspricht [metrischer Typ].
Hinweis
Der metrische Typ ist ExpressionEvaluator
in dbgmetric.h nicht definiert, da davon ausgegangen wird, dass alle Metrikänderungen für Ausdrucksauswerter die entsprechenden Auswertungsfunktionen des Ausdrucks durchlaufen (das Layout des ExpressionEvaluator
Unterschlüssels ist etwas kompliziert, sodass die Details in dbgmetric.lib ausgeblendet werden).
ExpressionEvaluator
\
[Sprach-GUID]\
[Anbieter-GUID]\
CLSID
= [Klassen-GUID]
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
Engine
\
0
= [debug engine guid]
1
= [debug engine guid]
Platzhalter | Beschreibung |
---|---|
[Sprach-GUID] | Die GUID einer Sprache |
[Anbieter-GUID] | Die GUID eines Anbieters |
[Klassen-GUID] | Die GUID der Klasse, die diesen Ausdrucksauswerter implementiert |
[debug engine guid] | Die GUID eines Debugmoduls, mit dem dieser Ausdrucksauswerter arbeitet |
Ausdrucksauswertungserweiterungen
Nachfolgend sehen Sie die Organisation der Metriken der Ausdruckserweiterungserweiterungen in der Registrierung. EEExtensions
ist der metrische Typname für die Ausdrucksauswertungserweiterungen und entspricht [metrischer Typ].
EEExtensions
\
[Erweiterungs-GUID]\
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
Platzhalter | Beschreibung |
---|---|
[Erweiterungs-GUID] | Die GUID einer Ausdrucksauswertungserweiterung |
Ausnahmen
Es folgt die Organisation der Ausnahmenmetriken in der Registrierung. Exception
ist der metrische Typname für die Ausnahmen und entspricht [Metriktyp].
Exception
\
[debug engine guid]\
[Ausnahmetypen]\
[Ausnahme]\
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
[Ausnahme]\
[Metrik] = [metrischer Wert]
[Metrik] = [metrischer Wert]
Platzhalter | Beschreibung |
---|---|
[debug engine guid] | Die GUID eines Debugmoduls, das Ausnahmen unterstützt. |
[Ausnahmetypen] | Ein allgemeiner Titel für den Unterschlüssel, der die Klasse der Ausnahmen identifiziert, die behandelt werden können. Typische Namen sind C++-Ausnahmen, Win32-Ausnahmen, Common Language Runtime-Ausnahmen und systemeigene Laufzeitprüfungen. Diese Namen werden auch verwendet, um eine bestimmte Ausnahmeklasse für den Benutzer zu identifizieren. |
[Ausnahme] | Ein Name für eine Ausnahme: z. B. _com_error oder Control-Break. Diese Namen werden auch verwendet, um eine bestimmte Ausnahme für den Benutzer zu identifizieren. |
Anforderungen
Diese Dateien befinden sich im Microsoft Visual Studio 2010 SDK-Installationsverzeichnis (standardmäßig [laufwerk]\Programme\Microsoft Visual Studio 2010 SDK\).
Header: includes\dbgmetric.h
Bibliothek: libs\ad2de.lib, libs\dbgmetric.lib