Megosztás a következőn keresztül:


.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 -a lehetőség a -l és -p kombinált parancsikonja.

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-dumphaszná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 memcopyhí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] [topverem [bottomverem]] 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] [topstack [bottomstack]]

-vagy-

DSO [-verify] [topstack [bottomstack]]
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-dumpnem 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 MinidumpMode értéke 0van beállítva.

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 .NET-hibakereső bővítményekben érhető el.
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 1ca248cí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 1caa50cí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 00a79d98cí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.exeosztályában MainClass.
!token2ee unittest.exe 02000003 A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul unittest.exe02000003 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 1ca248cí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 1caa50cí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 00a79d98cí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.exeosztályában MainClass.
token2ee unittest.exe 02000003 A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul unittest.exe02000003 címén.
clrthreads Megjeleníti a felügyelt szálakat.

Lásd még: