SOS hibakeresési bővítmény

Az SOS hibakeresési bővítmény lehetővé teszi 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ény előre telepítve van a dotnet-dump és a Windbg/dbg használatával, és az LLDB-vel való használatra letölthető . Az SOS hibakeresési bővítményt a következőre használhatja:

  • 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.

Syntax

Windows rendszeren: ![command] [options]

Linux és macOS rendszeren: 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 a Soshelp területen is elérhető. Az egyéni parancsok súgója a következővel soshelp <command>érhető el: .

Parancs Leírás
bpmd [-nofuturemodule] [<modulnév><metódus neve>] [-md<MethodDesc>] -list-clear< pending breakpoint number-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 megvárja a modul betöltéséről szóló értesítést, és a töréspont létrehozása előtt lefordítja a just-in-time (JIT) parancsot.

A függőben lévő töréspontok listáját a -listával, -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 nem nulla 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ábó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 a felügyelt függvény argumentumait jeleníti meg.

A -l beállítás a keret helyi változóira vonatkozó információkat jeleníti meg. Az SOS hibakeresési bővítmény nem tudja lekérni a helyi neveket, ezért a helyi nevek kimenete a helyi címérték=><> formátumában <van.

A -a lehetőség az -l és a -p kombináció 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 lehetőség, az SOS minden felügyelt kerethez megkeresi a szimbólumokat, és ha sikeres, a megfelelő forrásfájl nevét és sorszámát jeleníti meg. A viselkedés letiltásához meg lehet adni az -n (Nincs sorszám) paramétert.

Az -f beállítás (teljes mód) megjeleníti azokat a natív kereteket, amely összekapcsolja őket a felügyelt keretekkel, valamint a felügyelt keretek szerelvénynevével és függvényeltolásával. Ez a beállítás nem jeleníti meg a natív kereteket, ha a dotnet-dump.

Az -r beállítás az egyes veremkeretekhez tartozó regisztereket memóriaképként jeleníti meg.

A -all beállítás a felügyelt szálak összes veremét kiképozza.
COMState Listázza az egyes szálak COM-lakásmodellt és egy mutatót Context , ha van ilyen. Ez a parancs csak Windows rendszeren támogatott.
DumpArray [-start<startIndex>] [-length<length>] [-details] [-nofields] <tömbobjektum címe>

-vagy-

DA [-start<startIndex>] [-length<length>] [-details] [-nofields] tömbobjektum címe>
Egy tömbobjektum elemeit vizsgálja.

A -start beállítás azt a kezdőindexet adja meg, amelynél az elemeket meg szeretné jeleníteni.

A -length beállítás megadja, hogy hány elem jelenjen meg.

A -details beállítás a DumpObj és a DumpVC formátumot használva jeleníti meg az elem részleteit.

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 meg van adva a -details beállítás.
DumpAsync (dumpasync) [-mt<MethodTable address>] [-type<partial type name>] [-waiting] [-roots] A DumpAsync bejárja az összegyűjtött szemétgyűjtőt, é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 következőként async voiddefiniált aszinkron állapotú gépeket: , async Task, async Task<T>async ValueTask, és async ValueTask<T>.

A kimenet tartalmazza a talált aszinkron állapotú gépobjektumok részletes adatait. Ezek 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.
DumpAssembly<szerelvény címe> 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< Enterprise kiadás Class cím> A típushoz társított struktúrával kapcsolatos EEClass 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, a DumpObj, a Name2 Enterprise kiadás vagy a Token2 Enterprise kiadás paranccsal kérje le a struktúracímetEEClass.
DumpDomain [<tartománycím>] Számba adja a megadott AppDomain objektumcímen belül betöltött összes Assembly objektumot. 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 AppDomain, a DumpDomain csak egy objektumot ad vissza.
DumpHeap [-stat] [-strings] [-short] [-min<size>] [-max<size>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable address>] [-type<partial type name>] [start [end]] 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. Ez lehetővé teszi a kimenet egyszerű futtatását a parancsból egy másik hibakereső parancsba az automatizáláshoz.

A -min beállítás figyelmen kívül hagyja a size bájtokban megadott paraméternél kisebb objektumokat.

A -max beállítás figyelmen kívül hagyja a size paraméternél nagyobb, bájtban megadott 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 a DumpHeap-t , 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 hívás memcopyalatt áll, 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 struktúrának.

A -type beállítás csak azokat az objektumokat sorolja fel, amelyeknek a típusneve a megadott sztring részszűrési egyezése.

A start paraméter a megadott címből indul ki.

A end paraméter a megadott címen leállítja a listázást.
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.
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\ területen. Netframework:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

Az opcionális -addr beállítás lehetővé teszi, hogy az alapértelmezett naplótól eltérő stressznaplót adjon meg.
DumpMD<MethodDesc-cím> A megadott címen lévő struktúra adatait MethodDesc jeleníti meg.

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ása megjeleníti az objektummal definiált összes metódus listáját.

Minden felügyelt objektum tartalmaz egy metódustáblamutatót.
DumpModule [-mt] <Modul címe> 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 DumpDomain vagy a DumpAssembly paranccsal lekérheti a modul címét.
DumpObj [-nofields] <objektum címe>

-vagy-

DO<objektum címe>
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 a típusmezőkön CLASS 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 [-Enterprise kiadás] [-n] [topstack [bottomstack]] Egy verem nyomkövetését jeleníti meg.

A -Enterprise kiadás 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 paramétereket és bottom a 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 lehetőség, az SOS minden felügyelt kerethez megkeresi a szimbólumokat, és ha sikeres, a megfelelő forrásfájl nevét és sorszámát jeleníti meg. A viselkedés letiltásához meg lehet adni az -n (Nincs sorszám) paramétert.
DumpSig sigaddr<>moduleaddr<> A megadott címen lévő struktúra adatait Sig jeleníti meg.
DumpSigElem sigaddr<>moduleaddr<> Egy aláírási objektum egyetlen elemét jeleníti meg. A legtöbb esetben a DumpSig használatával kell megvizsgálnia az egyes aláírási objektumokat. Ha azonban valamilyen módon sérült egy aláírás, a 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.

Az -verify beállítás ellenőrzi az objektummezők nem statikus CLASS mezőit.

Használja a DumpStackObject parancsot olyan veremkövetési parancsokkal, mint a K (windbg) vagy a bt (lldb) a clrstack paranccsal a helyi változók és paraméterek értékeinek meghatározásához.
DumpVC<MethodTable 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.
Enterprise kiadás Heap [-gc] [-loader] Megjeleníti a belső futtatókörnyezeti adatstruktúrák által felhasznált folyamatmemória adatait.

A -gc és a -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ó.
Enterprise kiadás Stack [-short] [-Enterprise kiadás] Futtatja a DumpStack parancsot a folyamat összes szálán.

A -Enterprise kiadás lehetőség 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ód címe>] 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 blokk) kódcímeit és eltolásait catch .
Gyakori kérdések Megjeleníti a gyakori kérdéseket. Nem támogatott a dotnet-dump.
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 megtisztítandó elemekről SyncBlocks , valamint a tisztításra váró ( RuntimeCallableWrappers RCW-kről). 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 lehetőség nagyon 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 az -allReadyval együtt használják, 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 any |<objektum címe> 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ímformátumát> a -gen vagy -gen által okozott törés után használja a rendszer. Abban az időben a hibakeresés megfelelő állapotban van a FindRoots számára, 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ód címe> 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] <Objektum címe> 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ópontok esetében. 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 az U parancsokkal szétszerelheti azt a keretet, amelyhez a helyi vagy argumentumérték tartozik, 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 szemétgyűjtő fogópontokra és elérhető objektumokra korlátozza.

A -all beállítás arra kényszeríti az összes gyökerét, hogy csak az egyedi gyökerek helyett jelenjenek meg.
GCWhere<objektum címe> 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 meg van adva, 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 parancscsalád által használt összes erőforrást felszabadítja Hist .

Általában nem kell explicit módon meghívnia HistClear, mert mindegyik HistInit megtisztítja 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.
HisztRoot-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> MethodDesc A JIT által lefordított kódban a megadott címen jeleníti meg a struktúrát.
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ó engedélyezéséhez adja meg a 0-t a funkció letiltásához, vagy az 1-et . Alapértelmezés szerint a MinidumpMode értéke 0.

A .dump /m paranccsal vagy a .dump paranccsal létrehozott minidumpek 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.
Name2 Enterprise kiadás (name2ee)< modul neve<>vagy metódus neve>

-vagy-

Name2 Enterprise kiadás< module név!<>típus vagy metódus neve>
Megjeleníti a MethodTable megadott típus vagy metódus struktúráját és EEClass szerkezetét a megadott modulban.

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) használatával. A modulnév paraméterként is megadható * az összes betöltött felügyelt modul kereséséhez. A modulnév paraméter lehet a modul hibakeresőjének neve is, például mscorlib vagy image00400000.

Ez a parancs támogatja a Windows hibakereső szintaxisát<<module>>!type. 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, az 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 a leírók által mutatott objektumok méretét. Az ObjSize parancs a szülőn kívül az összes gyermekobjektum méretét is tartalmazza.

Az -aggregátum lehetőség a -stat argumentummal együtt használható a még gyökerező típusok részletes megtekintéséhez. A !dumpheap -stat és a !objsize -aggregate -stat haszná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 [beágyazott] [<Kivételobjektum címe]>
Megjeleníti és formázhatja a megadott címen található osztályból Exception származtatott objektumok mezőit. Ha nem ad meg címet, a PrintException parancs megjeleníti az aktuális szálra kidobott utolsó kivételt.

A -nested beállítás megjeleníti a beágyazott kivételobjektumok részleteit.

A -lines beállítás megjeleníti a forrásinformációkat, ha elérhetők.

Ezzel a paranccsal formázhatja és tekintheti meg a _stackTrace mezőt, amely egy 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<Base address><Filename> A megadott címen a memóriába betöltött képet ír a megadott fájlba. Csak a Windbg támogatja.
SetHostRuntime [<runtime-directory>] 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 beállítás 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 kiszolgáló-, gyorsítótár- és könyvtárelérési útvonalakat ad hozzá a Windows szimbólum elérési útjának formátumában.

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 [-derived] [-create-create2 | ] <Exception><Pseudo-register number> 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 -derived beállítás a megadott kivételt és a megadott kivételből származó összes kivételt elkapja.

Csak a Windbg támogatja.
SyncBlk [-all | <syncblk number>] 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 SyncBlock szál tulajdonában lévő objektumoknak megfelelő 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ő gyorsírási azonosítóját, a CLR-szál azonosítóját és az operációs rendszer szálazonosítóját. A Szálak parancs emellett egy Tartomány oszlopot is megjelenít, amely azt az alkalmazástartományt jelzi, amelyben egy szál fut, egy APT oszlopot, amely a COM lakásmódot jeleníti meg, valamint egy Kivétel oszlopot, amely az utolsó kivételt jeleníti meg a szálon.

Az -live beállítás élő szálhoz társított szálakat jelenít meg.

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, AppDomain a szálak eltávolítása és a szálkészlet időzítőszálai.
ThreadState <State value mező> Megjeleníti a szál állapotát. A value paraméter a Threads jelentés kimenetében State lévő mező értéke.
Token2 Enterprise kiadás< module név<>jogkivonata> A megadott modulban megadott metaadat-jogkivonatot struktúrává vagy MethodDesc struktúrává alakítjaMethodTable.

A modulnévparamétert átadva * megkeresheti, hogy az adott jogkivonat mire van leképezéssel 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ód címe> Egy felügyelt metódus jegyzetekkel ellátott szétszerelését jeleníti meg, amelyet MethodDesc a metódus struktúramutatója vagy a metódus törzsének kódcíme határoz 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 az U parancs megjeleníti a GCInfo metódus 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. Megadhatja a -n beállítást a viselkedés letiltásához.
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.
VerifyObj<objektum címe> Ellenőrzi a sérülés jeleinek argumentumaként átadott objektumot. Csak Windows rendszeren támogatott.
Vmmap 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.

Dotnet-Dump

Az elérhető SOS-parancsok dotnet-dump analyzelistáját lásd: dotnet-dump.

Windows hibakereső

Az SOS hibakeresési bővítményt úgy is használhatja, hogy betölti a WinDbg/dbg hibakeresőbe , és parancsokat hajt végre a Windows hibakeresőn belül. Az SOS-parancsok élő folyamatokon vagy memóriaképeken használhatók.

A Windbgnek automatikusan be kell töltenie az SOS-bővítményt, amikor a hibakeresési folyamat tartalmazza a .NET-futtatókörnyezetet (coreclr.dll vagy libcoreclr.so).

LLDB hibakereső

Az SOS LLDB-hez való konfigurálásával kapcsolatos utasításokért lásd: dotnet-sos. Az SOS-parancsok élő folyamatokon vagy memóriaképeken használhatók.

Alapértelmezés szerint a következő beírással érheti el az összes SOS-parancsot: sos [command_name]. A gyakori parancsok azonban aliasként lettek elnevezve, így nincs szükség az előtagra sos :

Parancs Függvény
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 struktúra adatait EEClass jeleníti meg a megadott címen.
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).
dumplog Egy memóriabeli stressznapló tartalmát írja a megadott fájlba.
dumpmd A struktúra adatait MethodDesc jeleníti meg a megadott címen.
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 megadott metódus vagy mező <sigaddr> <moduleaddr>aláírásának memóriaképe.
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 fut 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 MethodDesc A JIT által lefordított kódban a megadott címen jeleníti meg a struktúrát.
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 MethodTable megadott típushoz vagy EEClass metódushoz tartozó struktúrákat a megadott modulban.
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 a következőhöz <root><target>: .
pe Megjeleníti és formázhatja a megadott címen található osztályból Exception származtatott objektumok mezőit.
printexception Megjeleníti és formázhatja a megadott címen található osztályból Exception származtatott 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ímben 00ad28d0. A megjelenítés a második elemtől indul, és öt elemnél folytatódik.
!dumpassembly 1ca248 Megjeleníti a szerelvény tartalmát a címben 1ca248.
!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 struktúrát MethodDesc a címben 902f40.
!dumpmodule 1caa50 Egy modullal kapcsolatos információkat jelenít meg a címben 1caa50.
!DumpObj a79d40 Egy objektum adatait jeleníti meg a címben a79d40.
!DumpVC 0090320c 00a79d9c Megjeleníti egy értékosztály mezőit a címben 00a79d9c lévő metódustáblával 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 Meghatározza egy objektum alkalmazástartományát a címben 00a79d98.
!gcinfo 5b68dbb8 Megjeleníti az aktuális folyamat összes szemétgyűjtő fogópontját.
!name2ee unittest.exe MainClass.Main MethodTable A modul unittest.exeosztályában MainClass lévő metódus metódusának és EEClass struktúráinak Main megjelenítése.
!token2ee unittest.exe 02000003 A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul unittest.execímében02000003.

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ímben 00ad28d0. A megjelenítés a második elemtől indul, és öt elemnél folytatódik.
dumpassembly 1ca248 Megjeleníti a szerelvény tartalmát a címben 1ca248.
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 struktúrát MethodDesc a címben 902f40.
dumpmodule 1caa50 Egy modullal kapcsolatos információkat jelenít meg a címben 1caa50.
dumpobj a79d40 Egy objektum adatait jeleníti meg a címben a79d40.
dumpvc 0090320c 00a79d9c Megjeleníti egy értékosztály mezőit a címben 00a79d9c lévő metódustáblával 0090320c.
eeheap -gc Megjeleníti a szemétgyűjtő által használt folyamatmemóriát.
findappdomain 00a79d98 Meghatározza egy objektum alkalmazástartományát a címben 00a79d98.
gcinfo 5b68dbb8 Megjeleníti az aktuális folyamat összes szemétgyűjtő fogópontját.
name2ee unittest.exe MainClass.Main MethodTable A modul unittest.exeosztályában MainClass lévő metódus metódusának és EEClass struktúráinak Main megjelenítése.
token2ee unittest.exe 02000003 A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul unittest.execímében02000003.
clrthreads Megjeleníti a felügyelt szálakat.

Lásd még