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 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á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<>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 void definiá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<EEClass-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 Name2EE vagy a Token2EE paranccsal kérje le a struktúracímet EEClass . |
DumpDomain [<tartománycím>] | Számba adja a megadott Assembly objektumcímen belül betöltött összes AppDomain 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] [<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 memcopy alatt á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 CLASS , 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 stack [bottom stack]] |
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 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<> | A megadott címen lévő struktúra adatait Sig jeleníti meg. |
DumpSigElem sigaddr<> | 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] [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 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. |
EEHeap [-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ó. |
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ó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. |
Name2EE (name2ee) <modul neve><vagy metódus neve> -vagy- Name2EE<modul neve!><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. |
Token2EE<modulnév><jogkivonata> | A megadott modulban megadott metaadat-jogkivonatot struktúrává vagy MethodTable struktúrává alakítjaMethodDesc .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. |
Virtuálisgép-térké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. |
Dotnet-Dump
Az elérhető SOS-parancsok dotnet-dump analyze
listá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.
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 EEClass osztályában Main lévő metódus metódusának és MainClass struktúráinak unittest.exe megjelenítése. |
!token2ee unittest.exe 02000003 |
A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul 02000003 címébenunittest.exe . |
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 EEClass osztályában Main lévő metódus metódusának és MainClass struktúráinak unittest.exe megjelenítése. |
token2ee unittest.exe 02000003 |
A metaadat-jogkivonattal kapcsolatos információkat jeleníti meg a modul 02000003 címébenunittest.exe . |
clrthreads |
Megjeleníti a felügyelt szálakat. |