.NET hibakereső bővítmények
A .NET hibakereső bővítmények lehetővé teszik a .NET-futtatókörnyezetben futó kódokkal kapcsolatos információk megtekintését élő folyamatokon és memóriaképeken egyaránt. A bővítmények előre telepítve vannak Windbg, és az LLDB-vel való használatra letölthetők. A .NET hibakeresőbővítményei a következőre használhatók:
- Gyűjtsön információkat a felügyelt halomról.
- Keresse meg a halomsérüléseket.
- A futtatókörnyezet által használt belső adattípusok megjelenítése.
- A futtatókörnyezeten belül futó összes felügyelt kódra vonatkozó információk megtekintése.
A .NET hibakereső bővítmények a meglévő dotnet-sos eszköz parancsait, valamint új parancsokat tartalmaznak. A natív AOT-futtatókörnyezetben mostantól korlátozott számú parancs is támogatott.
Szintaxis
A szélcső alatt: ![command] [options]
AZ LLDB alatt: sos [command] [options]
Számos parancs rendelkezik aliasokkal vagy parancsikonokkal az LLDB alatt: clrstack [options]
Parancsok
A következő parancstáblázat a Súgó vagy soshelpalatt is elérhető. Az egyéni parancsok súgója a soshelp <command>
használatával érhető el.
Parancs | Leírás |
---|---|
bpmd [-nofuturemodule] [<modul neve><metódus neve>] [-md<MethodDesc >] -list-clear<függőben lévő töréspontszám>-clearall |
Létrehoz egy töréspontot a megadott metódusban a megadott modulban. Ha a megadott modul és metódus nincs betöltve, ez a parancs a töréspont létrehozása előtt megvárja a modul betöltéséről és az igény szerinti fordításról szóló értesítést. A függőben lévő töréspontok listáját a -list, -clearés -clearall beállításokkal kezelheti: A -list beállítás létrehozza az összes függőben lévő töréspont listáját. Ha egy függőben lévő töréspont nemzero modulazonosítóval rendelkezik, a töréspont az adott betöltött modul egy függvényére vonatkozik. Ha a függőben lévő töréspont nulla modulazonosítóval rendelkezik, a töréspont azokra a modulokra vonatkozik, amelyek még nincsenek betöltve. A -clear vagy -clearall beállítással távolítsa el a függőben lévő töréspontokat a listáról. |
CLRStack [-a] [-l] [-p] [-n] [-f] [-r] [-all] | Csak felügyelt kód veremkövetését biztosítja. A -p beállítás argumentumokat jelenít meg a felügyelt függvényhez. A -l beállítás a keret helyi változóira vonatkozó információkat jeleníti meg. A .NET hibakereső bővítményei nem tudják lekérni a helyi neveket, ezért a helyi nevek kimenete <helyi cím>=<érték>. A Az -n beállítás letiltja a forrásfájlnevek és a sorszámok megjelenítését. Ha a hibakeresőnél meg van adva a SYMOPT_LOAD_LINES beállítás, az SOS minden felügyelt kerethez megkeresi a szimbólumokat, és ha sikeres, megjeleníti a megfelelő forrásfájlnevet és sorszámot. A -n (Nincs sorszám) paraméter adható meg a viselkedés letiltásához. A -f lehetőség (teljes mód) megjeleníti azokat a natív kereteket, amely a felügyelt keretekkel, valamint a felügyelt keretek szerelvénynevével és függvényeltolásával összhangban van. Ez a beállítás nem jelenít meg natív kereteket dotnet-dump használatakor.Az -r beállítás az egyes veremkeretek regisztereit memóriaképként jeleníti meg. A -all beállítás az összes felügyelt szál halmait dobja ki. |
COMState | Felsorolja az egyes szálak COM-lakásmodellt és egy Context mutatót, ha van ilyen. Ez a parancs csak Windows rendszeren támogatott. |
DumpArray [-start<startIndex>] [-length<length>] [-details] [-nofields] <tömbobjektum-cím> -vagy- DA [-start<startIndex>] [-length<length>] [-details] [-nofields] tömbobjektum-cím> |
Egy tömbobjektum elemeit vizsgálja. A -start beállítás azt a kezdőindexet határozza meg, amelynél az elemeket meg szeretné jeleníteni. A -length beállítás határozza meg, hogy hány elem jelenjen meg. A -details beállítás az elem részleteit jeleníti meg a DumpObj és DumpVC formátumok használatával. A -nofields beállítás megakadályozza a tömbök megjelenítését. Ez a beállítás csak akkor érhető el, ha a -details beállítás meg van adva. |
DumpAsync (dumpasync) [-mt<MethodTable address>] [-type<részleges típusnév>] [-waiting] [-roots] | A DumpAsync bejárja a szeméttel összegyűjtött halomterületet, és megkeresi az aszinkron állapotú gépeket képviselő objektumokat, amikor egy aszinkron metódus állapota átkerül a halomba. Ez a parancs felismeri a async void , async Task , async Task<T> , async ValueTask és async ValueTask<T> aszinkron állapotú gépeket.A kimenet tartalmazza a talált aszinkron állapotú gépobjektumok részletes adatait. Ezek a részletek a következők: - Az aszinkron állapotú gépobjektum típusának sora, beleértve a MethodTable címét, az objektum címét, méretét és típusnevét. - Az objektumban található állapotgép-típusnév egy sora. - Az állapotgép egyes mezőinek felsorolása. - A folytatás egy sora ebből az állapotgép-objektumból, ha egy vagy több regisztrálva van. - Felderített GC-gyökerek ehhez az aszinkron állapotú gépobjektumhoz. Natív AOT-alkalmazások esetén támogatott. |
DumpAssembly<szerelvénycím> | Egy szerelvény adatait jeleníti meg. A DumpAssembly parancs több modult is felsorol, ha léteznek. A szerelvény címét a DumpDomain paranccsal szerezheti be. |
DumpClass<EEClass cím> | A típushoz társított EEClass struktúrával kapcsolatos információkat jeleníti meg.A DumpClass parancs statikus mezőértékeket jelenít meg, de nem jelenít meg nem statikus mezőértékeket. A DumpMT, DumpObj, Name2EEvagy Token2EE paranccsal kérhet le egy EEClass struktúracímet. |
DumpDomain [<tartománycím>] | Számba adja az egyes Assembly objektumokat, amelyek a megadott AppDomain objektumcímen belül vannak betöltve. Ha paraméterek nélkül hívjuk meg, a DumpDomain parancs felsorolja a folyamat összes AppDomain objektumát. Mivel a .NET (Core) csak egy AppDomainrendelkezik, DumpDomain csak egy objektumot ad vissza. |
DumpHeap [-stat] [-strings] [-short] [-min<méret>] [-max<méret>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable address>] [-type<részleges típusnév>] [start [vége]] | Információkat jelenít meg a szemétgyűjtési halomról és az objektumok gyűjtési statisztikáiról. A DumpHeap parancs figyelmeztetést jelenít meg, ha túlzott töredezettség észlelhető a szemétgyűjtő halomban. A -stat beállítás a statisztikai típus összegzésére korlátozza a kimenetet. A -strings beállítás statisztikai sztringérték-összegzésre korlátozza a kimenetet. A -short beállítás csak az egyes objektumok címére korlátozza a kimenetet. Ezzel a paranccsal egyszerűen futtathatja a kimenetet a parancsból egy másik hibakereső parancsba az automatizáláshoz. A -min beállítás figyelmen kívül hagyja a bájtokban megadott size paraméternél kisebb objektumokat.A -max beállítás figyelmen kívül hagyja a bájtokban megadott size paraméternél nagyobb objektumokat.A -thinlock beállítás a ThinLocksot jelenti. További információ: SyncBlk parancs. A -startAtLowerBound beállítás arra kényszeríti a halomsétát, hogy a megadott címtartomány alsó határánál kezdődjön. A tervezési fázisban a halom gyakran nem járható, mert az objektumok áthelyezése folyamatban van. Ez a beállítás arra kényszeríti DumpHeap, hogy a megadott alsó határnál kezdje meg a sétát. Ennek a beállításnak az alsó határaként meg kell adnia egy érvényes objektum címét. A következő metódustábla manuális megkereséséhez megjeleníthet memóriát egy hibás objektum címén. Ha a szemétgyűjtés jelenleg memcopy hívásban van, akkor a következő objektum címét is megkeresheti, ha hozzáadja a méretet a kezdőcímhez, amely paraméterként van megadva.Az -mt beállítás csak azokat az objektumokat sorolja fel, amelyek megfelelnek a megadott MethodTable szerkezetnek.A -type beállítás csak azokat az objektumokat sorolja fel, amelyeknek a típusneve a megadott sztring egyezése. A start paraméter a megadott címből indul ki.A end paraméter a megadott címen leáll.Natív AOT-alkalmazások esetén támogatott. |
DumpIL<Managed DynamicMethod objektum> | <DynamicMethodDesc mutató> | <MethodDesc mutató> | Megjeleníti a felügyelt metódushoz társított közös köztes nyelvet (CIL). A dinamikus CIL másként lesz kibocsátva, mint a szerelvényből betöltött CIL. A dinamikus CIL a felügyelt objektumtömbben lévő objektumokra hivatkozik a metaadat-jogkivonatok helyett. |
DumpLock [--allthreads] [--waits] | Megjeleníti a System.Threading.Lock objektumokkal kapcsolatos információkat, például a szálak által tárolt objektumokat (alapértelmezett), vagy azokat, amelyekre a szálak várnak. |
DumpLog [-addr<addressOfStressLog>] [<Filename>] | Egy memóriabeli stressznapló tartalmát írja a megadott fájlba. Ha nem ad meg nevet, ez a parancs létrehoz egy StressLog.txt nevű fájlt az aktuális könyvtárban. A memóriabeli stressznapló segít diagnosztizálni a stresszhibákat zárolások vagy I/O használata nélkül. A stressznapló engedélyezéséhez állítsa be a következő beállításkulcsokat a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFrameworkalatt: (DWORD) StressLog = 1 (DWORD) LogFacility = 0xffffffff (DWORD) StressLogSize = 65536 Az opcionális -addr lehetőség lehetővé teszi, hogy az alapértelmezett naplótól eltérő stressznaplót adjon meg.Natív AOT-alkalmazások esetén támogatott. |
DumpMD<MethodDesc-cím> | Egy MethodDesc struktúrával kapcsolatos információkat jelenít meg a megadott címen.Az IP2MD paranccsal lekérheti a MethodDesc struktúracímet egy felügyelt függvényből. |
DumpMT [-MD] <MethodTable-cím> | Egy metódustáblával kapcsolatos információkat jelenít meg a megadott címen. Az -MD beállítás megadásával megjelenik az objektummal definiált összes metódus listája. Minden felügyelt objektum tartalmaz egy metódustáblamutatót. |
DumpModule [-mt] <modulcím> | Egy modul adatainak megjelenítése a megadott címen. Az -mt beállítás megjeleníti a modulban definiált típusokat és a modul által hivatkozott típusokat A modul címének lekéréséhez használhatja a DumpDomain vagy DumpAssembly parancsot. |
DumpObj [-nofields] <objektumcím> -vagy- DO<objektumcím> |
Egy objektum adatait jeleníti meg a megadott címen. A DumpObj parancs megjeleníti a mezőket, a EEClass struktúraadatokat, a metódustáblát és az objektum méretét.A DumpStackObjects paranccsal lekérheti egy objektum címét. A DumpObj parancsot CLASS típusú mezőkön is futtathatja, mert ezek is objektumok.A - nofields beállítás megakadályozza az objektum mezőinek megjelenítését. Ez olyan objektumok esetében hasznos, mint a Sztring. |
DumpRuntimeTypes | Megjeleníti a futásidejű típusú objektumokat a szemétgyűjtő halomtárban, és felsorolja a hozzájuk tartozó típusneveket és metódustáblákat. |
DumpStack [-EE] [-n] [top verem [bottom verem]] |
Egy verem nyomkövetését jeleníti meg. Az -EE beállítás hatására a DumpStack parancs csak felügyelt függvényeket jelenít meg. Az x86-platformokon megjelenített veremkeretek korlátozásához használja a top és bottom paramétereket.Az -n beállítás letiltja a forrásfájlnevek és a sorszámok megjelenítését. Ha a hibakeresőnél meg van adva a SYMOPT_LOAD_LINES beállítás, az SOS minden felügyelt kerethez megkeresi a szimbólumokat, és ha sikeres, megjeleníti a megfelelő forrásfájl nevét és sorszámát. A -n (Nincs sorszám) paraméter adható meg a viselkedés letiltásához. |
DumpSig<sigaddr><moduleaddr> | Egy Sig struktúrával kapcsolatos információkat jelenít meg a megadott címen. |
DumpSigElem<sigaddr><moduleaddr> | Egy aláírási objektum egyetlen elemét jeleníti meg. A legtöbb esetben DumpSig kell használnia az egyes aláírási objektumok megtekintéséhez. Ha azonban valamilyen módon sérült egy aláírás, DumpSigElem használatával elolvashatja annak érvényes részeit. |
DumpStackObjects [-verify] [top stack [bottom stack]]-vagy- DSO [-verify] [ top stack [bottom stack]] |
Megjeleníti az aktuális verem határán belül található összes felügyelt objektumot. A -verify beállítás ellenőrzi az objektummezők nemsztatikus CLASS mezőit.Használja a DumpStackObject parancsot olyan veremkövetési parancsokkal, mint a K (windbg) vagy bt (lldb) és a clrstack parancs a helyi változók és paraméterek értékeinek meghatározásához. |
DumpVC<MethodTable cím><cím> | Egy értékosztály mezőinek adatait jeleníti meg a megadott címen. A MethodTable paraméter lehetővé teszi, hogy a DumpVC parancs helyesen értelmezze a mezőket. Az értékosztályok nem rendelkeznek metódustáblával első mezőként. |
EEHeap [-gc] [-loader] | Megjeleníti a belső futtatókörnyezeti adatstruktúrák által felhasznált folyamatmemória adatait. A -gc és -loader beállítás a parancs kimenetét szemétgyűjtő vagy rakodó adatstruktúrákra korlátozza. A szemétgyűjtő adatai a felügyelt halom egyes szegmenseinek tartományait sorolják fel. Ha a mutató a -gcáltal megadott szegmenstartományba esik, a mutató egy objektummutató. |
EEStack [-short] [-EE] | Futtatja a DumpStack parancsot a folyamat összes szálán. Az -EE beállítás közvetlenül a DumpStack parancsnak lesz átadva. A -short paraméter a kimenetet a következő típusú szálakra korlátozza: Olyan szálak, amelyek zárolva lettek. A szemétgyűjtés engedélyezéséhez elakadt szálak. A jelenleg felügyelt kódban lévő szálak. |
EHInfo [<MethodDesc cím>] [<Kódcím>] | Megjeleníti a kivételkezelési blokkokat egy megadott metódusban. Ez a parancs megjeleníti a záradékblokk (a try blokk) és a kezelőblokk (a catch blokk) kódcímeit és eltolásait. |
gyakori kérdések | Megjeleníti a gyakori kérdéseket. A dotnet-dump nem támogatott. |
FinalizeQueue [-detail] | [-allReady] [-short] | Megjeleníti a véglegesítéshez regisztrált összes objektumot. A -detail beállítás további információkat jelenít meg a törölni kívánt SyncBlocks , valamint a törlésre váró RuntimeCallableWrappers (RCW-k) esetében. Mindkét adatstruktúrát gyorsítótárazza és megtisztítja a véglegesítő szál a futtatáskor.A -allReady beállítás megjeleníti az összes olyan objektumot, amely készen áll a véglegesítésre, függetlenül attól, hogy a szemétgyűjtés már megjelölte őket, vagy a következő szemétgyűjtés jelöli meg őket. A "véglegesítésre kész" listában szereplő objektumok olyan véglegesíthető objektumok, amelyek már nem gyökereznek. Ez a beállítás költséges lehet, mert ellenőrzi, hogy a véglegesíthető üzenetsorok összes objektuma továbbra is gyökerezik-e.A -short beállítás az egyes objektumok címére korlátozza a kimenetet. Ha -allReadyhasználja, az összes olyan objektumot felsorolja, amelynek véglegesítője már nem gyökerezik. Ha egymástól függetlenül használják, a véglegesíthető és a "véglegesítésre kész" üzenetsorok összes objektumát listázza. |
FindAppDomain<Objektumcím> | Meghatározza egy objektum alkalmazástartományát a megadott címen. |
FindRoots-gen<N> | -gen bármilyen |<objektumcím> | A hibakereső a megadott generáció következő gyűjteményében törik meg a hibakeresésben. Az effektus a törés bekövetkezése után azonnal alaphelyzetbe áll. A következő gyűjtemény megszakításához újra ki kell adnia a parancsot. A parancs <objektumcím> formáját a rendszer a -gen vagy -gen által okozott törés után használja. Abban az időben a hibakeresés megfelelő állapotban van FindRoots, hogy azonosítsa a jelenlegi elítélt generációk objektumainak gyökereit. Csak Windows rendszeren támogatott. |
GCHandles [-perdomain] | Megjeleníti a folyamat szemétgyűjtő fogópontjaira vonatkozó statisztikákat. A -perdomain beállítás alkalmazástartományonként rendezi a statisztikákat. A GCHandles paranccsal megkeresheti a szemétgyűjtők által okozott memóriaszivárgásokat. Memóriavesztés például akkor fordul elő, ha a kód egy nagy tömböt őriz meg, mert egy erős szemétgyűjtő fogópont továbbra is rá mutat, és a fogópont felszabadítása nélkül el lesz vetve. Csak Windows rendszeren támogatott. |
GCHandleLeaks | A folyamat során az erős és rögzített szemétgyűjtő fogópontokra mutató hivatkozások memóriájában keres rá, és megjeleníti az eredményeket. Ha talál egy leírót, a GCHandleLeaks parancs megjeleníti a hivatkozás címét. Ha a memóriában nem található fogópont, ez a parancs egy értesítést jelenít meg. Csak Windows rendszeren támogatott. |
GCInfo<MethodDesc-cím><Kódcím> | Megjeleníti azokat az adatokat, amelyek azt jelzik, hogy a regisztrációk vagy veremhelyek felügyelt objektumokat tartalmaznak. Szemétgyűjtés esetén a gyűjtőnek ismernie kell az objektumokra mutató hivatkozások helyét, hogy új objektummutató-értékekkel frissíthesse őket. |
GCRoot [-nostacks] [-all] <Objektumcím> | Egy objektumra mutató hivatkozásokkal (vagy gyökerekkel) kapcsolatos információkat jelenít meg a megadott címen. A GCRoot parancs megvizsgálja a teljes felügyelt halom és a fogóponttáblát a többi objektumon és fogóponton belüli fogópontokhoz a veremen. Ezután a rendszer minden egyes vermet megkeresi az objektumokra mutató mutatókat, és a véglegesítő üzenetsor is meg lesz keresve. Ez a parancs nem határozza meg, hogy a veremgyökér érvényes-e vagy elvetve van-e. A clrstack és U parancsokkal szétszerelheti a helyi vagy argumentumértékhez tartozó keretet annak megállapításához, hogy a veremgyökér még használatban van-e. A -nostacks beállítás a keresést a szemétgyűjtő fogópontokra és az elérhető objektumokra korlátozza. A -all beállítás az összes gyökér megjelenítésére kényszeríti az egyedi gyökerek helyett. |
GCWhere<objektumcím> | Megjeleníti a megadott argumentum szemétgyűjtési halomjának helyét és méretét. Ha az argumentum a felügyelt halomban található, de nem érvényes objektumcím, a méret 0 (nulla) értékként jelenik meg. |
Súgó (soshelp) [<parancs>] [faq ] |
Megjeleníti az összes elérhető parancsot, ha nincs megadva paraméter, vagy részletes súgóinformációkat jelenít meg a megadott parancsról. A faq paraméter válaszokat jelenít meg a gyakori kérdésekre. |
HeapStat [-inclUnrooted | -iu] | Megjeleníti az egyes halomokhoz tartozó generációméreteket és az egyes halomokon lévő összes szabad területet az egyes generációkban. Ha a -inclUnrooted beállítás van megadva, a jelentés a már nem gyökerező szemétgyűjtési halomból származó felügyelt objektumokra vonatkozó információkat tartalmaz. Csak Windows rendszeren támogatott. |
HistClear | A Hist parancscsalád által használt összes erőforrást felszabadítja.Általában nem kell explicit módon meghívnia HistClear , mert minden HistInit törli az előző erőforrásokat. |
HistInit | Inicializálja az SOS-struktúrákat a hibakeresésben mentett stressznaplóból. |
HistObj<obj_address> | Megvizsgálja a stressznapló áthelyezési rekordjait, és megjeleníti azokat a szemétgyűjtési áthelyezések láncát, amelyek az argumentumként átadott címre vezethettek. |
HistObjFind<obj_address> | Megjeleníti az összes olyan naplóbejegyzést, amely egy objektumra hivatkozik a megadott címen. |
HistRoot<gyökér> | Megjeleníti a megadott gyökér előléptetésével és áthelyezésével kapcsolatos információkat. A gyökérérték segítségével nyomon követhető egy objektum mozgása a szemétgyűjteményeken keresztül. |
IP2MD (ip2md) <Kódcím> | Megjeleníti a MethodDesc struktúrát a JIT által lefordított kód megadott címén. |
ListNearObj (lno) <obj_address> | Megjeleníti a megadott címet megelőző és követő objektumokat. A parancs megkeresi a szemétgyűjtési halom azon címét, amely úgy néz ki, mint egy felügyelt objektum érvényes kezdete (érvényes metódustábla alapján), valamint az argumentumcímet követő objektum. Csak Windows rendszeren támogatott. |
MinidumpMode [0] [1] | Megakadályozza a nem biztonságos parancsok futtatását minidump használatakor. A funkció letiltásához adja meg a 0, vagy 1 a funkció engedélyezéséhez. Alapértelmezés szerint a A .dump /m paranccsal vagy .dump paranccsal létrehozott minidumpok korlátozott CLR-specifikus adatokkal rendelkeznek, és lehetővé teszik az SOS-parancsok csak egy részhalmazának helyes futtatását. Egyes parancsok nem várt hibákkal meghiúsulhatnak, mert a szükséges memóriaterületek nincsenek leképezve, vagy csak részben vannak leképezve. Ez a beállítás védelmet nyújt a nem biztonságos parancsok minidumps elleni futtatásától. Csak a Windbg támogatja. |
Name2EE (name2ee) <modul neve><típus vagy metódus neve> -vagy- Name2EE<modul neve>!<típus- vagy metódusnév> |
Megjeleníti a megadott modulban megadott típushoz vagy metódushoz tartozó MethodTable struktúrát és EEClass struktúrát.A megadott modult be kell tölteni a folyamatba. A megfelelő típusnév lekéréséhez tallózással keresse meg a modult a Ildasm.exe (IL Disassembler). A modulnév paraméterként * is átadhat az összes betöltött felügyelt modul kereséséhez. A modul neve paraméter lehet a modul hibakeresőjének neve is, például mscorlib vagy image00400000 .Ez a parancs támogatja a < module >! <type >Windows hibakereső szintaxisát. A típusnak teljes mértékben minősítettnek kell lennie. |
ObjSize [<Objektumcím>] | [-aggregate] [-stat] | A megadott objektum méretét jeleníti meg. Ha nem ad meg paramétereket, a ObjSize parancs megjeleníti a felügyelt szálakon található összes objektum méretét, megjeleníti a folyamat összes szemétgyűjtő fogópontját, és összegzi az adott fogópontok által mutatott objektumok méretét. A ObjSize parancs a szülőn kívül az összes gyermekobjektum méretét is tartalmazza. Az -aggregate beállítás használható a -stat argumentummal a még gyökerező típusok részletes megtekintéséhez. A !dumpheap -stat és !objsize -aggregate -stathasználatával meghatározhatja, hogy mely objektumok nem gyökereznek, és diagnosztizálhat különböző memóriaproblémákat. Csak Windows rendszeren támogatott. |
PrintException [-nested] [-lines] [<Exception object address>] -vagy- PE [-nested] [<Exception object address>] |
Megjeleníti és formázhatja a megadott cím Exception osztályából származó objektumok mezőit. Ha nem ad meg címet, a PrintException parancs megjeleníti az aktuális szálra kidobott utolsó kivételt. A beágyazott beállítás megjeleníti a beágyazott kivételobjektumok részleteit. A -lines lehetőség megjeleníti a forrásadatokat, ha elérhető. Ezzel a paranccsal formázhatja és tekintheti meg a _stackTrace mezőt, amely bináris tömb. |
ProcInfo [-env] [-time] [-mem] | Megjeleníti a folyamat környezeti változóit, a kernel cpu-idejét és a memóriahasználati statisztikákat. Csak a Windbg támogatja. |
RCWCleanupList<RCWCleanupList cím> | Megjeleníti a futásidejű hívható burkolók listáját a megadott címen, amely karbantartásra vár. Csak a Windbg támogatja. |
SaveModule<Alapcím><Fájlnév> | A megadott címen a memóriába betöltött képet ír a megadott fájlba. Csak a Windbg támogatja. |
SetHostRuntime [<futtatókörnyezeti címtár>] | Ez a parancs beállítja a .NET-futtatókörnyezet elérési útját a hibakeresőben (LLDB) az SOS részeként futó felügyelt kód üzemeltetéséhez. A futtatókörnyezetnek legalább 2.1.0-s vagy újabb verziónak kell lennie. Ha vannak szóközök a címtárban, azokat egyszeresen kell idézni ('). Az SOS általában egy telepített .NET-futtatókörnyezetet próbál megkeresni a felügyelt kód automatikus futtatásához, de ez a parancs akkor érhető el, ha sikertelen. Az alapértelmezett beállítás a hibakeresés alatt álló futtatókörnyezet (libcoreclr) használata. Akkor használja ezt a parancsot, ha a hibakereséskor használt alapértelmezett futtatókörnyezet nem működik elégen az SOS-kód futtatásához, vagy ha a verzió nem éri el a 2.1.0-s verziót. Ha AZ SOS-parancs futtatásakor a következő hibaüzenetet kapta, ezzel a paranccsal állítsa az elérési utat 2.1.0-s vagy újabb .NET-futtatókörnyezetre. (lldb) clrstack Error: Fail to initialize CoreCLR 80004005 ClrStack failed (lldb) sethostruntime /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.6 A parancshéjban található "dotnet --info" paranccsal megkeresheti a telepített .NET-futtatókörnyezet elérési útját. |
SetSymbolServer [-ms] [-disable] [-log] [-loadsymbols] [-cache<cache-path>] [-directory<search-directory>] [-sympath<windows-symbol-path>] [<symbol-server-URL>] | Engedélyezi a szimbólumkiszolgáló letöltési támogatását. A -ms lehetőség lehetővé teszi a nyilvános Microsoft-szimbólumkiszolgálóról való letöltést. A -disable kapcsoló bekapcsolja a szimbólum letöltési támogatását. A -cache<cache-path> beállítás egy szimbólumgyorsítótár-könyvtárat határoz meg. Az alapértelmezett érték $HOME/.dotnet/symbolcache, ha nincs megadva. A -directory beállítás hozzáad egy elérési utat a szimbólumok kereséséhez. Egynél több is lehet. A -sympath beállítás a Windows szimbólum elérési útjának formátumában adja hozzá a kiszolgálói, gyorsítótár- és könyvtárelérési útvonalakat. A -log lehetőség lehetővé teszi a szimbólumok letöltésének naplózását. A -loadsymbols beállítás megpróbálja letölteni a futtatókörnyezet natív .NET-szimbólumait. Az lldb és a dotnet-dump támogatott. |
SOSFlush | Belső SOS-gyorsítótár kiürítése. |
SOSStatus [-reset] | Megjeleníti a belső SOS-állapotot, vagy alaphelyzetbe állítja a belső gyorsítótárazott állapotot. |
StopOnException [-származtatott] [-create | -create2] <Kivétel><pszeudoregisztrálási szám> | Ez azt eredményezi, hogy a hibakereső leáll a megadott kivétel eldobásakor, de más kivételek esetén továbbra is fut. A -származtatott beállítás a megadott kivételt és a megadott kivételből származó összes kivételt rögzíti. Csak a Windbg támogatja. |
SyncBlk [-all | <szinkronizálási szám>] | Megjeleníti a megadott SyncBlock struktúrát vagy az összes SyncBlock struktúrát. Ha nem ad át argumentumokat, a SyncBlk parancs megjeleníti a szál tulajdonában lévő objektumoknak megfelelő SyncBlock struktúrát.A SyncBlock -struktúra olyan további információk tárolója, amelyeket nem kell minden objektumhoz létrehozni. Képes a COM interop-adatok, kivonatkódok és a szálbiztos műveletekhez szükséges zárolási információk tárolására. |
ThreadPool | Megjeleníti a felügyelt szálkészlettel kapcsolatos információkat, beleértve az üzenetsorban lévő munkakérések számát, a befejező portszálak számát és az időzítők számát. |
szálak (clrthreads) [-live] [-special] | Megjeleníti a folyamat összes felügyelt szálát. A Szálak parancs megjeleníti a hibakereső rövidített azonosítóját, a CLR-szál azonosítóját és az operációs rendszer szálazonosítóját. Emellett a Szálak parancs megjeleníti a Tartomány oszlopot, amely azt az alkalmazástartományt jelzi, amelyben egy szál fut, egy APT oszlopot, amely megjeleníti a COM lakásmódot, valamint egy Kivétel oszlopot, amely a szálon az utolsó kivételt jeleníti meg. Az -live beállítás megjeleníti az élő szálhoz társított szálakat. A -special beállítás megjeleníti a CLR által létrehozott összes speciális szálat. A speciális szálak közé tartoznak a szemétgyűjtési szálak (egyidejű és kiszolgálói szemétgyűjtés), a hibakereső segédszálak, a véglegesítő szálak, a AppDomain a eltávolítási szálak és a szálkészlet időzítőszálai. Natív AOT-alkalmazások esetén támogatott. |
ThreadState <State value mező> | Megjeleníti a szál állapotát. A value paraméter a Szál jelentés kimenetében lévő State mező értéke. |
Token2EE<modul neve><token> | A megadott modulban megadott metaadat-jogkivonatot MethodTable struktúrává vagy MethodDesc struktúrává alakítja.A modulnévparaméterhez tartozó * átadva megkeresheti, hogy az adott jogkivonat mit képez le minden betöltött felügyelt modulban. A hibakereső nevét is átadhatja egy modulnak, például mscorlib vagy image00400000 . |
U [-gcinfo] [-ehinfo] [-n] <MethodDesc cím> | <kódcím> | A metódushoz tartozó MethodDesc struktúramutatóval vagy a metódus törzsén belüli kódcímmel megadott felügyelt metódus jegyzetekkel ellátott szétszerelését jeleníti meg. Az U parancs az elejétől a végéig megjeleníti a teljes metódust, a metaadat-jogkivonatokat névvé konvertáló széljegyzetekkel.A -gcinfo beállítás hatására a U parancs megjeleníti a metódus GCInfo szerkezetét.A -ehinfo beállítás a metódus kivételadatait jeleníti meg. Ezeket az információkat az EHInfo paranccsal is beszerezheti. Az -n beállítás letiltja a forrásfájlnevek és a sorszámok megjelenítését. Ha a hibakeresőnél meg van adva a SYMOPT_LOAD_LINES beállítás, az SOS minden felügyelt kerethez megkeresi a szimbólumokat, és ha sikeres, megjeleníti a megfelelő forrásfájl nevét és sorszámát. A viselkedés letiltásához megadhatja az -n beállítást. |
VerifyHeap | Ellenőrzi a szemétgyűjtő halom sérülésének jeleit, és megjeleníti a talált hibákat. A halom sérülését a helytelenül létrehozott platformhívási hívások okozhatják. Natív AOT-alkalmazások esetén támogatott. |
VerifyObj<objektumcím> | Ellenőrzi a sérülés jeleinek argumentumaként átadott objektumot. Csak Windows rendszeren támogatott. |
virtuálisgép- | Bejárja a virtuális címteret, és megjeleníti az egyes régiókra alkalmazott védelem típusát. Csak a Windbg támogatja. |
VMStat | Összegző nézetet biztosít a virtuális címtérről, az adott memóriára alkalmazott védelem egyes típusai (ingyenes, fenntartott, véglegesített, privát, leképezett, rendszerkép) szerint rendezve. A TOTAL oszlop az ÁTLAG oszlop eredményét jeleníti meg a BLK DARAB oszloptal szorozva. Csak a Windbg támogatja. |
Windows hibakereső
A .NET hibakereső bővítményeket úgy is használhatja, hogy betölti a WinDbg/dbg hibakereső és parancsokat hajt végre a Windows hibakeresőn belül. A parancsok élő folyamatokon vagy memóriaképeken használhatók.
A Windbgnek automatikusan be kell töltenie a bővítményt, amikor a hibakeresési folyamat tartalmazza a .NET-futtatókörnyezetet (coreclr.dll vagy libcoreclr.so).
LLDB hibakereső
Az LLDB .NET hibakereső bővítményeinek konfigurálásával kapcsolatos utasításokért lásd dotnet-debugger-extensions. A parancsok élő folyamatokon vagy memóriaképeken használhatók.
Alapértelmezés szerint a következő beírással érheti el az összes parancsot: sos [command_name]
. A gyakori parancsok azonban aliasként lettek elnevezve, így nincs szükség a sos
előtagra:
Parancs | Funkció |
---|---|
analyzeoom |
Megjeleníti az utolsó OOM adatait, amely a GC-halomba irányuló foglalási kérelemben történt. |
bpmd |
Töréspontot hoz létre a megadott felügyelt metódusban a megadott modulban. |
clrmodules |
Felsorolja a folyamat felügyelt moduljait. |
clrstack |
Csak felügyelt kód veremkövetését biztosítja. |
clrthreads |
Felsorolja a futó felügyelt szálakat. |
clru |
Egy felügyelt metódus jegyzetekkel ellátott szétszerelését jeleníti meg. |
dbgout |
Engedélyezi/letiltja (-off ) a belső SOS-naplózást. |
dso |
Megjeleníti az aktuális verem határán belül található összes felügyelt objektumot. |
dumpalc |
Egy gyűjthető AssemblyLoadContext részleteit jeleníti meg, amelybe a megadott objektum betöltődik. |
dumparray |
Egy felügyelt tömb részleteit jeleníti meg. |
dumpasync |
Megjeleníti az aszinkron állapotú gépek adatait a szemétgyűjtési halomon. |
dumpassembly |
Egy szerelvény részleteit jeleníti meg. |
dumpclass |
A megadott cím EEClass szerkezetével kapcsolatos információkat jeleníti meg. |
dumpconcurrentdictionary |
Egyidejű szótártartalmat jelenít meg. |
dumpconcurrentqueue |
Egyidejű üzenetsor-tartalmat jelenít meg. |
dumpdelegate |
Egy meghatalmazott adatainak megjelenítése. |
dumpdomain |
Megjeleníti az összes AppDomain vagy a megadott szerelvények adatait. |
dumpgcdata |
Megjeleníti a csoportházirend-adatokkal kapcsolatos információkat. |
dumpgen |
A megadott generáció halomtartalmat jelenít meg. |
dumpheap |
Információkat jelenít meg a szemétgyűjtési halomról és az objektumok gyűjtési statisztikáiról. |
dumpil |
Megjeleníti a felügyelt metódushoz társított közös köztes nyelvet (CIL). |
dumplock |
Megjeleníti a System.Threading.Lock objektumokkal kapcsolatos információkat, például a szálak által tárolt objektumokat (alapértelmezett), vagy azokat, amelyekre a szálak várnak. Ez a parancs csak |
dumplog |
Egy memóriabeli stressznapló tartalmát írja a megadott fájlba. |
dumpmd |
A megadott cím MethodDesc szerkezetével kapcsolatos információkat jeleníti meg. |
dumpmodule |
A modul adatainak megjelenítése a megadott címen. |
dumpmt |
A metódustáblával kapcsolatos információkat jeleníti meg a megadott címen. |
dumpobj |
Megjeleníti az objektum adatait a megadott címen. |
dumpruntimetypes |
Megkeresi az összes System.RuntimeType objektumot a GC-halomtárban, és kinyomtatja az általuk hivatkozott típusnevet és MethodTable-t is. |
dumpsig |
A <sigaddr> <moduleaddr> által megadott metódus vagy mező aláírásának törlése. |
dumpsigelem |
Egy aláírási objektum egyetlen elemének memóriaképe. |
dumpstack |
Natív és felügyelt veremkövetést jelenít meg. |
dumpstackobjects |
Megjeleníti az aktuális verem határán belül található összes felügyelt objektumot. |
dumpvc |
Egy értékosztály mezőivel kapcsolatos információkat jelenít meg. |
eeheap |
Megjeleníti a belső futtatókörnyezeti adatstruktúrák által felhasznált folyamatmemória adatait. |
eestack |
A folyamat összes szálán futtat dumpstack . |
eeversion |
A futtatókörnyezetre és az SOS-verziókra vonatkozó információkat jeleníti meg. |
ehinfo |
Megjeleníti a kivételkezelési blokkokat egy JIT-ed metódusban. |
finalizequeue |
Megjeleníti a véglegesítéshez regisztrált összes objektumot. |
findappdomain |
GC-objektum AppDomainjének feloldása. |
findroots |
Megkeresi és megjeleníti az objektumgyökereket a GC-gyűjteményekben. |
gchandles |
Megjeleníti a folyamat szemétgyűjtő fogópontjaira vonatkozó statisztikákat. |
gcheapstat |
A szemétgyűjtő statisztikáit jeleníti meg. |
gcinfo |
Megjeleníti egy metódus JIT GC-kódolását. |
gcroot |
Információkat jelenít meg az objektumra mutató hivatkozásokról (vagy gyökerekről) a megadott címen. |
gcwhere |
Megjeleníti a megadott cím GC-halomjának helyét. |
histclear |
Felszabadítja a Hist parancscsalád által használt erőforrásokat. |
histinit |
Inicializálja az SOS-struktúrákat a hibakeresésben mentett stressznaplóból. |
histobj |
Megvizsgálja a stressznapló áthelyezési rekordjait, és megjeleníti azokat a szemétgyűjtési áthelyezések láncát, amelyek az argumentumként átadott címre vezethettek. |
histobjfind |
Megjeleníti az összes olyan naplóbejegyzést, amely az objektumra hivatkozik a megadott címen. |
histroot |
Megjeleníti a megadott gyökér előléptetésével és áthelyezésével kapcsolatos információkat. |
histstats |
A stressznapló statisztikáit jeleníti meg. |
ip2md |
Megjeleníti a MethodDesc struktúrát a JIT által lefordított kód megadott címén. |
listnearobj |
Megjeleníti a megadott címet megelőző és azt követő objektumot. |
loadsymbols |
Betölti a .NET natív modulszimbólumait. |
logging |
Engedélyezi/letiltja a belső SOS-naplózást. |
name2ee |
Megjeleníti a megadott modulban megadott típushoz vagy metódushoz tartozó MethodTable és EEClass struktúrákat. |
objsize |
A megadott objektum méretét jeleníti meg. |
parallelstacks |
Az egyesített szálak veremét a Visual Studio "Párhuzamos veremek" paneléhez hasonlóan jeleníti meg. |
pathto |
Megjeleníti a GC elérési útját <root> és <target> között. |
pe |
Megjeleníti és formázhatja a megadott cím Exception osztályából származó objektumok mezőit. |
printexception |
Megjeleníti és formázhatja a megadott cím Exception osztályából származó objektumok mezőit. |
runtimes |
Felsorolja a célban lévő futtatókörnyezeteket, vagy módosíthatja az alapértelmezett futtatókörnyezetet. |
stoponcatch |
A célfolyamat megszakítja a következő kivételt, amikor a végrehajtás során felügyelt kivételt kap. |
setclrpath |
Beállítja a coreclr dac/dbi fájlok betöltésének elérési útját.
setclrpath <path> . |
sethostruntime |
Beállítja vagy megjeleníti a .NET futtatókörnyezeti könyvtárat a felügyelt kód SOS-ban való futtatásához. |
setsymbolserver |
Engedélyezi a szimbólumkiszolgáló támogatását. |
setsostid |
Az aktuális operációsrendszer-azonosítót/szálindexet állítja be az LLDB által biztosított helyett.
setsostid <tid> <index> . |
sos |
Különböző coreclr hibakeresési parancsokat hajt végre. Használja a szintaxist sos <command-name> <args> . További információ: "soshelp". |
soshelp |
Megjeleníti az összes elérhető parancsot, ha nincs megadva paraméter, vagy részletes súgóinformációkat jelenít meg a megadott parancsról: soshelp <command> . |
syncblk |
Megjeleníti a SyncBlock tulajdonosának adatait. |
taskstate |
Feladatállapot megjelenítése olvasható formátumban. |
threadpool |
Megjeleníti a futtatókörnyezeti szálkészlet adatait. |
threadpoolqueue |
Üzenetsorba helyezett szálkészlet munkaelemeit jeleníti meg. |
threadstate |
Szép nyomtatja a jelentést a szálak állapotát. |
timerinfo |
A futó időzítőkkel kapcsolatos információkat jeleníti meg. |
token2ee |
Megjeleníti a methodTable struktúrát és a MethodDesc struktúrát a megadott jogkivonathoz és modulhoz. |
traverseheap |
Halomadatokat ír ki egy fájlba a CLR Profiler által ismert formátumban. |
verifyheap |
Ellenőrzi a GC halomját, hogy vannak-e sérülés jelei. |
verifyobj |
Ellenőrzi a sérülés jeleinek argumentumaként átadott objektumot. |
Windbg/cdb példahasználat
Parancs | Leírás |
---|---|
!dumparray -start 2 -length 5 -details 00ad28d0 |
Egy tömb tartalmát jeleníti meg a cím 00ad28d0 . A megjelenítés a második elemtől indul, és öt elemnél folytatódik. |
!dumpassembly 1ca248 |
Egy szerelvény tartalmát jeleníti meg a 1ca248 címen. |
!dumpheap |
Megjeleníti a szemétgyűjtő halomról szóló információkat. |
!DumpLog |
A memóriabeli stressznapló tartalmát egy StressLog.txt nevű (alapértelmezett) fájlba írja az aktuális könyvtárban. |
!dumpmd 902f40 |
Megjeleníti a MethodDesc struktúrát a cím 902f40 . |
!dumpmodule 1caa50 |
Egy modul adatait jeleníti meg a 1caa50 címen. |
!DumpObj a79d40 |
Egy objektum adatainak megjelenítése a cím a79d40 . |
!DumpVC 0090320c 00a79d9c |
Megjeleníti egy értékosztály mezőit a cím 00a79d9c a metódustáblával a cím 0090320c . |
!eeheap -gc |
Megjeleníti a szemétgyűjtő által használt folyamatmemóriát. |
!finalizequeue |
Megjeleníti a véglegesítésre ütemezett összes objektumot. |
!findappdomain 00a79d98 |
Egy objektum alkalmazástartományát határozza meg a 00a79d98 címnél. |
!gcinfo 5b68dbb8 |
Megjeleníti az aktuális folyamat összes szemétgyűjtő fogópontját. |
!name2ee unittest.exe MainClass.Main |
Megjeleníti a Main metódus MethodTable és EEClass szerkezetét a modul unittest.exe osztályában MainClass . |
!token2ee unittest.exe 02000003 |
A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul unittest.exe 02000003 címén. |
LLDB-példahasználat
Parancs | Leírás |
---|---|
dumparray -start 2 -length 5 -details 00ad28d0 |
Egy tömb tartalmát jeleníti meg a cím 00ad28d0 . A megjelenítés a második elemtől indul, és öt elemnél folytatódik. |
dumpassembly 1ca248 |
Egy szerelvény tartalmát jeleníti meg a 1ca248 címen. |
dumpheap |
Megjeleníti a szemétgyűjtő halomról szóló információkat. |
dumplog |
A memóriabeli stressznapló tartalmát egy StressLog.txt nevű (alapértelmezett) fájlba írja az aktuális könyvtárban. |
dumpmd 902f40 |
Megjeleníti a MethodDesc struktúrát a cím 902f40 . |
dumpmodule 1caa50 |
Egy modul adatait jeleníti meg a 1caa50 címen. |
dumpobj a79d40 |
Egy objektum adatainak megjelenítése a cím a79d40 . |
dumpvc 0090320c 00a79d9c |
Megjeleníti egy értékosztály mezőit a cím 00a79d9c a metódustáblával a cím 0090320c . |
eeheap -gc |
Megjeleníti a szemétgyűjtő által használt folyamatmemóriát. |
findappdomain 00a79d98 |
Egy objektum alkalmazástartományát határozza meg a 00a79d98 címnél. |
gcinfo 5b68dbb8 |
Megjeleníti az aktuális folyamat összes szemétgyűjtő fogópontját. |
name2ee unittest.exe MainClass.Main |
Megjeleníti a Main metódus MethodTable és EEClass szerkezetét a modul unittest.exe osztályában MainClass . |
token2ee unittest.exe 02000003 |
A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul unittest.exe 02000003 címén. |
clrthreads |
Megjeleníti a felügyelt szálakat. |