Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
Ez a cikk a .NET-keretrendszerre vonatkozik. Ez nem vonatkozik a .NET újabb implementációira, beleértve a .NET 6-os és újabb verzióit.
A felügyelt hibakeresési asszisztensek (MDA-k) olyan hibakeresési segédek, amelyek a közös nyelvi futtatókörnyezettel (CLR) együttműködve nyújtanak információt a futtatókörnyezet állapotáról. Az asszisztensek tájékoztató üzeneteket hoznak létre a futásidejű eseményekről, amelyeket egyébként nem lehet csapdába csalni. Az MDA-k segítségével elkülönítheti a nehezen megtalálható alkalmazáshibákat, amelyek a kezelt és a nem kezelt kód közötti váltáskor fordulnak elő.
Az összes MDA engedélyezéséhez vagy letiltásához adjon hozzá egy kulcsot a Windows beállításjegyzékéhez, vagy állítson be egy környezeti változót. Az alkalmazáskonfigurációs beállítások használatával engedélyezheti az adott MDA-kat. Az alkalmazás konfigurációs fájljában további konfigurációs beállításokat állíthat be egyes MDA-khoz. Mivel ezeket a konfigurációs fájlokat a futtatókörnyezet betöltésekor elemzi a rendszer, a felügyelt alkalmazás elindítása előtt engedélyeznie kell az MDA-t. A már elindított alkalmazások esetében nem engedélyezheti.
Az alábbi táblázat a .NET-keretrendszerrel szállított MDA-kat sorolja fel:
A .NET-keretrendszer alapértelmezés szerint aktiválja az MDA-k egy részhalmazát az összes menedzselt hibakereső számára. Az alapértelmezett készletet a Visual Studióban a Hibakeresés menü >kivételbeállítások elemével, majd a Felügyelt hibakeresési segédek listájának kibontásával tekintheti meg.
MDA-k engedélyezése és letiltása
Az MDA-kat beállításkulcs, környezeti változó és alkalmazáskonfigurációs beállítások használatával engedélyezheti és tilthatja le. Az alkalmazáskonfigurációs beállítások használatához engedélyeznie kell a beállításkulcsot vagy a környezeti változót.
Jótanács
Az MDA-k letiltása helyett megakadályozhatja, hogy a Visual Studio megjelenítse az MDA párbeszédpanelt, amikor MDA-értesítés érkezik. Ehhez válassza a Windows>Kivételbeállítások lehetőséget a Hibakeresés menüben, bontsa ki a Felügyelt hibakeresési asszisztensek listát, majd az egyes MDA-k jelölőnégyzetében jelölje be vagy törölje a jelet az Állj meg, ha eldobták opció esetében.
Regisztrációs kulcs
Az MDA-k engedélyezéséhez adja hozzá a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\MDA alkulcsot (írja be REG_SZ, 1. érték) a Windows beállításjegyzékbe. Másolja a következő példát egy MDAEnable.reg nevű szövegfájlba. Nyissa meg a Windows beállításszerkesztőt (RegEdit.exe), és a Fájl menüben válassza az Importálás lehetőséget. Válassza ki a MDAEnable.reg fájlt az MDA-k engedélyezéséhez a számítógépen. Ha az alkulcsot 1 sztringértékre állítja (nem 1 DWORD-értékre), az MDA-beállítások beolvasása az ApplicationName.suffix.mda.config fájlból történik. A Jegyzettömbhöz tartozó MDA-konfigurációs fájl neve például notepad.exe.mda.config.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"MDA"="1"
Ha a számítógép 32 bites alkalmazást futtat egy 64 bites operációs rendszeren, akkor az MDA-kulcsot az alábbihoz hasonlóan kell beállítani:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework]
"MDA"="1"
További információért lásd Application-Specific konfigurációs beállításokat . A rendszerleíró adatbázis beállítását felülírhatja a COMPLUS_MDA környezeti változó. További információt a környezeti változóban talál.
Az MDA-k letiltásához állítsa az MDA alkulcsát 0 (nulla) értékre a Windows Beállításszerkesztővel.
Alapértelmezés szerint egyes MDA-k akkor is engedélyezve vannak, ha egy hibakeresőhöz csatolt alkalmazást futtat, még a beállításkulcs hozzáadása nélkül is. Ezeket az asszisztenseket a jelen szakaszban korábban ismertetett MDADisable.reg fájl futtatásával tilthatja le.
Környezeti változó
Az MDA aktiválását a beállításkulcsot felülíró környezeti változó COMPLUS_MDAis vezérelheti. A COMPLUS_MDA karakterlánc egy MDA-név vagy más speciális vezérlőkarakterláncok eseti érzéketlen, pontosvesszővel elválasztott listája. Menedzselt vagy nem menedzselt hibakereső alatt történő indításkor alapértelmezés szerint egy MDA-készlet engedélyezve van. Implicit módon történik az alapértelmezés szerint a hibakeresők alatt engedélyezett MDA-k pontosvesszővel tagolt listájának előrefűzése a környezeti változó vagy a beállításkulcs értékéhez. A speciális vezérlőkarakterláncok a következők:
0- Inaktiválja az összes MDA-t.1- Beolvassa az MDA-beállításokat a(z) ApplicationName.mda.config.managedDebugger- Explicit módon aktiválja az összes MDA-t, amely implicit módon aktiválódik, amikor egy felügyelt végrehajtható fájlt egy hibakereső alatt indítanak el.unmanagedDebugger- Explicit módon aktiválja az összes olyan MDA-t, amely implicit módon aktiválódik, amikor egy nem felügyelt végrehajtható fájlt elindít egy hibakereső alatt.
Ütköző beállítások esetén a legutóbbi beállítások felülbírálják a korábbi beállításokat:
COMPLUS_MDA=0letiltja az összes MDA-t, beleértve azokat is, amelyek implicit módon engedélyezve vannak egy hibakereső alatt.A
COMPLUS_MDA=gcUnmanagedToManagedlehetővé teszi agcUnmanagedToManaged, valamint minden MDA-t, amely automatikusan engedélyezett egy hibakereső alatt.COMPLUS_MDA=0;gcUnmanagedToManagedengedélyezigcUnmanagedToManaged, de letiltja azokat az MDA-kat, amelyek egyébként implicit módon engedélyezve lennének egy hibakereső alatt.
Application-Specific konfigurációs beállítások
Egyes asszisztenseket egyenként engedélyezheti, letilthat és konfigurálhat az alkalmazás MDA konfigurációs fájljában. Ha engedélyezni szeretné egy alkalmazáskonfigurációs fájl használatát az MDA-k konfigurálásához, be kell állítani az MDA beállításkulcsát vagy a COMPLUS_MDA környezeti változót. Az alkalmazáskonfigurációs fájl általában ugyanabban a könyvtárban található, mint az alkalmazás végrehajtható (.exe) fájlja. A fájlnév az ApplicationName.mda.config; például notepad.exe.mda.config. Az alkalmazáskonfigurációs fájlban engedélyezett asszisztensek attribútumokkal vagy elemekkel rendelkezhetnek az asszisztens viselkedésének szabályozására.
Az alábbi példa bemutatja, hogyan engedélyezheti és konfigurálhatja a marsallást:
<mdaConfig>
<assistants>
<marshaling>
<methodFilter>
<match name="*"/>
</methodFilter>
<fieldFilter>
<match name="*"/>
</fieldFilter>
</marshaling>
</assistants>
</mdaConfig>
Az Marshaling MDA információkat bocsát ki arról a felügyelt típusról, amelyet nem felügyelt típussá alakítanak át az alkalmazás minden felügyelt-nem felügyelt átmenet során. Az Marshaling MDA szűrheti a Metódusszűrő és a FieldFilter gyermekelemekben megadott metódus- és struktúramezők nevét is.
Az alábbi példa bemutatja, hogyan engedélyezheti több MDA-t az alapértelmezett beállítások használatával:
<mdaConfig>
<assistants>
<illegalPrepareConstrainedRegion />
<invalidCERCall />
<openGenericCERCall />
<virtualCERCall />
</assistants>
</mdaConfig>
Fontos
Ha egy konfigurációs fájlban egynél több asszisztenst ad meg, betűrendben kell felsorolnia őket. Ha például engedélyezni szeretné az virtualCERCall és az invalidCERCall MDA-kat, akkor hozzá kell adnia a <invalidCERCall /> bejegyzést a <virtualCERCall /> bejegyzés elé. Ha a bejegyzések nem betűrendben vannak, egy kezeletlen érvénytelen konfigurációs fájlkivételi üzenet jelenik meg.
MDA-kivételek
MDA engedélyezése esetén az akkor is aktív, amikor a kódod nem fut hibakereső alatt. Ha egy MDA-esemény akkor jön létre, amikor egy hibakereső nincs jelen, az eseményüzenet egy kezeletlen kivétel párbeszédpanelen jelenik meg, bár ez nem kezeletlen kivétel. A párbeszédpanel elkerülése érdekében távolítsa el az MDA-engedélyezés beállításait, ha a kód nem hibakeresési környezetben fut.
Amikor a kód a Visual Studio integrált fejlesztői környezetben (IDE) fut, elkerülheti az adott MDA-eseményeknél megjelenő kivétel párbeszédpanelt. Ehhez válassza a HibakeresésmenüBen a Windows>kivételbeállításait. A Kivételbeállítások ablakban bontsa ki a Felügyelt hibakeresési segédek listát, majd törölje a jelet az Kidobáskor megáll jelölőnégyzetből az egyes MDA-k esetében. Ezzel a párbeszédpanellel is engedélyezheti az MDA-kivétel párbeszédpanelek megjelenítését.
MDA-kimenet
Az MDA kimenete az alábbi példához hasonló, amely bemutatja az PInvokeStackImbalance MDA kimenetét.
Egy PInvoke függvényhívás, 'MDATest!MDATest.Program::StdCall', felborította a verem kiegyensúlyozottságát. Ennek oka valószínűleg az, hogy a felügyelt PInvoke-aláírás nem felel meg a nem felügyelt környezetbeli célaláírásnak. Ellenőrizze, hogy a PInvoke-aláírás hívási konvenciói és paraméterei megegyeznek-e a cél nem felügyelt aláírással.