Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.
Spravované pomocníky pro ladění (MDA) jsou pomůcky ladění, které pracují s modulem CLR (Common Language Runtime) a poskytují informace o stavu modulu runtime. Asistenti generují informační zprávy o událostech za běhu programu, které nelze jinak zachytit. Pomocí MDAs můžete izolovat těžko nalezitelné chyby aplikace, ke kterým dochází při přechodu mezi řízeným a neřízeným kódem.
Všechny mdA můžete povolit nebo zakázat přidáním klíče do registru Windows nebo nastavením proměnné prostředí. Konkrétní MDAs můžete povolit pomocí nastavení konfigurace aplikace. V konfiguračním souboru aplikace můžete nastavit další nastavení konfigurace pro některé jednotlivé mdA. Vzhledem k tomu, že se tyto konfigurační soubory analyzují při načtení modulu runtime, musíte před spuštěním spravované aplikace povolit mdA. Nelze ji povolit pro aplikace, které už byly spuštěny.
Následující tabulka obsahuje seznam MDA, které jsou dodávány s rozhraním .NET Framework:
Rozhraní .NET Framework ve výchozím nastavení aktivuje podmnožinu MDA pro všechny spravované debuggery. Výchozí sadu v sadě Visual Studio můžete zobrazit tak, že v nabídce Ladění zvolíte>systému Windows a pak rozbalíte seznam Pomocníků pro spravované ladění.
Povolení a zakázání MDAs
MdA můžete povolit a zakázat pomocí klíče registru, proměnné prostředí a nastavení konfigurace aplikace. Abyste mohli použít nastavení konfigurace aplikace, musíte povolit klíč registru nebo proměnnou prostředí.
Návod
Místo zakázání MDA můžete sadě Visual Studio zabránit v zobrazení dialogového okna MDA při každém přijetí oznámení MDA. Uděláte to tak, že v nabídce Ladění zvolíte>systému Windows, rozbalíte seznam Pomocníků pro spravované ladění a pak zaškrtnete nebo zrušíte zaškrtnutí políčka Zrušit při vyvolání pro jednotlivou sadu MDA.
Klíč registru
Pokud chcete povolit MDAs, přidejte do registru Windows podklíč HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\MDA (typ REG_SZ, hodnota 1). Zkopírujte následující příklad do textového souboru s názvem MDAEnable.reg. Otevřete Editor registru systému Windows (RegEdit.exe) a v nabídce Soubor zvolte Importovat. Vyberte soubor MDAEnable.reg, abyste povolili MDAs na tomto počítači. Nastavení podklíče na řetězcovou hodnotu 1 (nikoli hodnota DWORD z 1) umožňuje čtení nastavení MDA ze souboru ApplicationName.suffix.mda.config souboru. Například konfigurační soubor MDA pro Poznámkový blok by byl pojmenován notepad.exe.mda.config.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"MDA"="1"
Pokud počítač používá 32bitovou aplikaci v 64bitovém operačním systému, měl by být klíč MDA nastavený takto:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]
"MDA"="1"
Další informace najdete v tématu Application-Specific Nastavení konfigurace . Nastavení registru je možné přepsat systémovou proměnnou COMPLUS_MDA prostředí. Další informace najdete v tématu Proměnná prostředí .
Pokud chcete zakázat mda, nastavte podklíč MDA na hodnotu 0 (nula) pomocí Editoru registru systému Windows.
Ve výchozím nastavení jsou některé MDA povoleny při spuštění aplikace, která je připojena k ladicímu programu, i bez přidání klíče registru. Tyto asistenty můžete zakázat spuštěním souboru MDADisable.reg , jak je popsáno výše v této části.
Proměnná prostředí
Aktivaci MDA může řídit také proměnná prostředí COMPLUS_MDA, která přepíše klíč registru. Řetězec COMPLUS_MDA je nerozlišující malá a velká písmena a je seznamem názvů MDA nebo jiných speciálních řídicích řetězců oddělených středníkem. Spuštění pod spravovaným nebo nespravovaným ladicím programem ve výchozím nastavení aktivuje sadu MDAs. Implicitně se to provádí tím, že se seznam MDA oddělených středníkem, které jsou ve výchozím nastavení povoleny v ladicím programu, přidá k hodnotě proměnné prostředí nebo klíče registru. Speciální řídicí řetězce jsou následující:
0- Deaktivuje všechny MDA.1- Čte nastavení MDA z ApplicationName.mda.config.managedDebugger– Explicitně aktivuje všechny MDAs, které jsou implicitně aktivovány při spuštění spravovaného programu pod debuggerem.unmanagedDebugger– Explicitně aktivuje všechny MDA, které jsou implicitně aktivovány při spuštění nespravovaného spustitelného souboru v rámci debuggeru.
Pokud existují konfliktní nastavení, nejnovější nastavení přepíší předchozí nastavení:
COMPLUS_MDA=0zakáže všechny MDA, včetně těch, které jsou implicitně povoleny pod ladicím programem.COMPLUS_MDA=gcUnmanagedToManagedumožňujegcUnmanagedToManagednavíc ke všem MDA, které jsou implicitně povoleny prostřednictvím ladicího programu.COMPLUS_MDA=0;gcUnmanagedToManagedpovolígcUnmanagedToManaged, ale zakáže MDAs, které by jinak byly implicitně povoleny při použití ladicího programu.
Application-Specific Nastavení konfigurace
Některé asistenty můžete povolit, zakázat a nakonfigurovat jednotlivě v konfiguračním souboru MDA pro aplikaci. Chcete-li povolit použití konfiguračního souboru aplikace pro konfiguraci MDA, musí být nastaven klíč registru MDA nebo proměnná prostředí COMPLUS_MDA. Konfigurační soubor aplikace se obvykle nachází ve stejném adresáři jako spustitelný soubor aplikace (.exe). Název souboru má tvar ApplicationName.mda.config; například notepad.exe.mda.config. Asistenti, kteří jsou povoleni v konfiguračním souboru aplikace, mohou mít atributy nebo prvky navržené pro řízení chování pomocníka.
Následující příklad ukazuje, jak povolit a nakonfigurovat marshalling:
<mdaConfig>
<assistants>
<marshaling>
<methodFilter>
<match name="*"/>
</methodFilter>
<fieldFilter>
<match name="*"/>
</fieldFilter>
</marshaling>
</assistants>
</mdaConfig>
MDA Marshaling generuje informace o spravovaném typu, který je zpracováván na nespravovaný typ pro každý přechod ze spravovaného na nespravovaný typ v aplikaci. MDA Marshaling může také filtrovat názvy polí metody a struktury zadaných v podřízených elementech methodFilter a fieldFilter .
Následující příklad ukazuje, jak povolit více MDA pomocí výchozího nastavení:
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion />
<invalidCERCall />
<openGenericCERCall />
<virtualCERCall />
</assistants>
</mdaConfig>
Důležité
Když v konfiguračním souboru zadáte více než jednoho asistenta, musíte je vypsat v abecedním pořadí. Pokud například chcete povolit jak virtualCERCall MDA, tak i invalidCERCall MDA, musíte přidat položku <invalidCERCall /> před položku <virtualCERCall />. Pokud položky nejsou v abecedním pořadí, zobrazí se neošetřená zpráva o výjimce konfiguračního souboru.
Výjimky MDA
Pokud je povoleno MDA, je aktivní i v případě, že se váš kód nespouští pod ladicím programem. Pokud je událost MDA vyvolána v případě, že ladicí program není k dispozici, zobrazí se zpráva události v neošetřeném dialogovém okně výjimky, i když se nejedná o neošetřenou výjimku. Chcete-li se vyhnout dialogovému oknu, odeberte nastavení MDA, když se váš kód nespouští v prostředí ladění.
Když se váš kód spustí v integrovaném vývojovém prostředí (IDE) sady Visual Studio, můžete se vyhnout dialogovému okně výjimky, které se zobrazí pro konkrétní události MDA. Uděláte to tak, že v nabídce Ladění zvolíteNastavení výjimek>. V okně Nastavení výjimek rozbalte seznam Pomocníků pro spravované ladění a zrušte zaškrtnutí políčka Přerušit při vyvolání pro jednotlivou MDA. Toto dialogové okno můžete použít také k povolení zobrazení dialogových oken výjimek MDA.
Výstup MDA
Výstup MDA je podobný následujícímu příkladu, který ukazuje výstup z PInvokeStackImbalance MDA:
Volání funkce PInvoke 'MDATest!MDATest.Program::StdCall' způsobilo nevyváženost zásobníku. Důvodem je pravděpodobně to, že spravovaný podpis PInvoke neodpovídá nespravovanému cílovému podpisu. Zkontrolujte, jestli konvence volání a parametry podpisu PInvoke odpovídají cílovému nespravovanému podpisu.