SOS hata ayıklama uzantısı

SOS hata ayıklama uzantısı, hem canlı işlemlerde hem de dökümlerde .NET çalışma zamanı içinde çalışan kod hakkındaki bilgileri görüntülemenizi sağlar. Uzantı dotnet-dump ve Windbg/dbg ile önceden yüklenmiştir ve LLDB ile kullanılmak üzere indirilebilir. SOS hata ayıklama uzantısını kullanarak aşağıdakileri yapabilirsiniz:

  • Yönetilen yığın hakkında bilgi toplayın.
  • Yığın bozulmalarını arayın.
  • Çalışma zamanı tarafından kullanılan iç veri türlerini görüntüleme.
  • Çalışma zamanı içinde çalışan tüm yönetilen kod hakkındaki bilgileri görüntüleyin.

Sözdizimi

Windows'da: ![command] [options]

Linux ve macOS'ta: sos [command] [options]

Komutların çoğunda lldb altında diğer adlar veya kısayollar bulunur: clrstack [options]

Komutlar

Aşağıdaki komut tablosu Yardım veya soshelp altında da kullanılabilir. Tek tek komut yardımı kullanılarak soshelp <command>kullanılabilir.

Komut Açıklama
bpmd [-nofuturemodule] [<modül adı<>yöntem adı>] [-md><MethodDesc] -list -clear<beklemedeki kesme noktası numarası-clearall> Belirtilen modül içinde belirtilen yöntemde bir kesme noktası oluşturur.

Belirtilen modül ve yöntem yüklenmediyse, bu komut, modülün yüklendiğine ve bir kesme noktası oluşturmadan önce tam zamanında (JIT) derlediğine ilişkin bir bildirim bekler.

Bekleyen kesme noktalarının listesini -list, -clear ve -clearall seçeneklerini kullanarak yönetebilirsiniz:

-list seçeneği, bekleyen tüm kesme noktalarının listesini oluşturur. Bir bekleyen kesme noktasının sıfır olmayan bir modül kimliği varsa, o kesme noktası o belirli modüldeki bir işleve özeldir. Bekleyen kesme noktasının modül kimliği sıfırsa, o kesme noktası henüz yüklenmeyen modüller için geçerli olur.

Bekleyen kesme noktalarını listeden kaldırmak için -clear veya -clearall seçeneğini kullanın.
CLRStack [-a] [-l] [-p] [-n] [-f] [-r] [-all] Yalnızca bir yönetilen kodların bir yığın izlemesini sağlar.

-p seçeneği yönetilen işlevin bağımsız değişkenlerini gösterir.

-l seçeneği, çerçevedeki yerel değişkenlerle ilgili bilgileri gösterir. SOS hata ayıklama uzantısı yerel adları alamaz, bu nedenle yerel adların çıktısı yerel adres=><biçimindedir.<>

-a seçeneği, birleştirilmiş -l ve -p kısayoludur.

-n seçeneği, kaynak dosya adlarının ve satır numaralarının görüntülenmesini devre dışı bırakır. Hata ayıklayıcı için SYMOPT_LOAD_LINES seçeneği belirtildiyse, SOS yönetilen her çerçeve için simgelere bakar ve başarılı olursa, ilgili dosya adını ve satır numarasını görüntüler. Bu davranışı devre dışı bırakmak için -n (Satır numarası yok) parametresi belirtilebilir.

-f seçeneği (tam mod), yönetilen çerçevelerle iç içe geçmiş yerel çerçeveleri ve yönetilen çerçeveler için derleme adını ve işlev uzaklığını görüntüler. Bu seçenek ile dotnet-dumpkullanıldığında yerel çerçeveleri görüntülemez.

-r seçeneği, her yığın çerçevesi için yazmaçları döküm eder.

-all seçeneği tüm yönetilen iş parçacıklarının yığınlarının dökümünü alır.
COMState Her iş parçacığı için COM daire modelini ve varsa bir Context işaretçiyi listeler. Bu komut yalnızca Windows'ta desteklenir.
DumpArray [-start<startIndex>] [-length<length>] [-details] [-nofields] <dizi nesnesi adresi>

-veya-

DA [-start<startIndex>] [-length<length>] [-details] [-nofields] dizi nesnesi adresi>
Bir dizi nesnesinin öğelerini inceler.

-start seçeneği, öğelerin görüntüleneceği başlangıç dizinini belirtir.

-length seçeneği gösterilecek öğe sayısını belirtir.

-details seçeneği DumpObj ve DumpVC biçimlerini kullanarak öğenin ayrıntılarını görüntüler.

-nofields seçeneği dizilerin görüntülenmesini engeller. Bu seçenek yalnızca -details seçeneği belirtildiğinde kullanılabilir.
DumpAsync (dumpasync) [-mt<MethodTable adresi>] [-type<kısmi tür adı>] [-waiting] [-roots] DumpAsync, toplanan çöp yığınından geçiş yaparak zaman uyumsuz bir yöntemin durumu yığına aktarıldığında oluşturulan zaman uyumsuz durum makinelerini temsil eden nesneleri arar. Bu komut , , async Task, async ValueTaskasync Task<T>ve async ValueTask<T>olarak async voidtanımlanan zaman uyumsuz durum makinelerini tanır.

Çıktı, bulunan her zaman uyumsuz durum makine nesnesi için bir ayrıntı bloğu içerir. Bu ayrıntılar şunlardır:
- MethodTable adresi, nesne adresi, boyutu ve tür adı gibi zaman uyumsuz durum makine nesnesinin türü için bir satır.
- Nesnede yer alan durum makine türü adı için bir satır.
- Durum makinesindeki her alanın listesi.
- Bir veya daha fazla kayıtlıysa, bu durum makine nesnesinden devam için bir satır.
- Bu zaman uyumsuz durum makine nesnesi için bulunan GC kökleri.
DumpAssembly<derleme adresi> Bir derlemeyle ilgili bilgileri görüntüler.

DumpAssembly komutu, varsa birden çok modülü listeler.

DumpDomain komutunu kullanarak bir derleme adresi alabilirsiniz.
DumpClass<EEClass adresi> Bir türle ilişkili yapı hakkındaki EEClass bilgileri görüntüler.

DumpClass komutu statik alan değerlerini görüntüler ancak statik olmayan alan değerlerini görüntülemez.

Bir yapı adresi almak EEClass için DumpMT, DumpObj, Name2EE veya Token2EE komutunu kullanın.
DumpDomain [<etki alanı adresi>] Belirtilen AppDomain nesne adresi içinde yüklenen her Assembly nesneyi numaralandırır. Parametre olmadan çağrıldığında, DumpDomain komutu bir işlemdeki tüm AppDomain nesneleri listeler. .NET (Core) yalnızca bir AppDomaintane olduğundan, DumpDomain yalnızca bir nesne döndürür.
DumpHeap [-stat] [-strings] [-short] [-min<size>] [-max<size>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable address>] [-type<partial type name>] [start [end]] Toplanan çöp yığınıyla ilgili bilgileri ve nesnelerle ilgili toplama istatistiklerini görüntüler.

DumpHeap komutu, çöp toplayıcı yığınında aşırı parçalanma algılarsa bir uyarı görüntüler.

-stat seçeneği, çıkışı istatistiksel tür özetiyle kısıtlar.

-strings seçeneği çıkışı istatistiksel dize değeri özetiyle kısıtlar.

-short seçeneği çıkışı yalnızca her nesnenin adresiyle sınırlar. Bu, otomasyon için komuttan başka bir hata ayıklayıcı komutuna kolayca çıktı yönlendirmenize olanak sağlar.

-min seçeneği, bayt cinsinden belirtilen parametreden size küçük nesneleri yoksayar.

-max seçeneği, bayt cinsinden belirtilen parametreden size büyük nesneleri yoksayar.

-thinlock seçeneği ThinLocks'u raporlar. Daha fazla bilgi için SyncBlk komutuna bakın.

seçeneği yığın -startAtLowerBound yürüyüşünün sağlanan adres aralığının alt sınırından başlamasını zorlar. Planlama aşamasında, nesneler taşınmakta olduğundan, yığın genellikle yürünebilir değildir. Bu seçenek DumpHeap'ı belirtilen alt sınırda yürümeye başlamaya zorlar. Bu seçeneğin çalışması alt sınır olarak geçerli bir nesne adresi sağlamanız gerekir. Sonraki yöntem tablosunu el ile bulmak için, bozuk bir nesnenin adresindeki belleği görüntüleyebilirsiniz. Çöp toplama şu anda için memcopybir çağrıdaysa, boyutu parametre olarak sağlanan başlangıç adresine ekleyerek sonraki nesnenin adresini de bulabilirsiniz.

-mt seçeneği yalnızca belirtilen MethodTable yapıya karşılık gelen nesneleri listeler.

-type seçeneği yalnızca tür adı belirtilen dizenin alt dize eşleşmesi olan nesneleri listeler.

start parametresi belirtilen adresten listelemeye başlar.

parametresi belirtilen end adreste listelemeyi durdurur.
DumpIL<Yönetilen DynamicMethod nesnesi | <>DynamicMethodDesc işaretçisi> | <MethodDesc işaretçisi> Yönetilen bir yöntemle ilişkili ortak ara dili (CIL) görüntüler.

Dinamik CIL, bir derlemeden yüklenen CIL'den farklı bir şekilde yayılır. Dinamik CIL, meta veri belirteçleri yerine yönetilen nesne dizisindeki nesnelere başvurur.
DumpLog [-addr<addressOfStressLog>] [<Filename>] Bir bellek içi yük günlüğünün içeriğini belirtilen dosyaya yazar. Bir ad belirtmezseniz, bu komut geçerli dizinde StressLog.txt adlı bir dosya oluşturur.

Bellek içi yük güvenliği, kilitler veya G/Ç kullanmadan yük hatalarını tanılamanıza yardımcı olur. Stres günlüğünü etkinleştirmek için HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ altında aşağıdaki kayıt defteri anahtarlarını ayarlayın. NETFramework:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

İsteğe bağlı -addr seçenek, varsayılan günlük dışında bir stres günlüğü belirtmenize olanak tanır.
DumpMD<MethodDesc adresi> Belirtilen adreste bir MethodDesc yapı hakkındaki bilgileri görüntüler.

Yönetilen bir işlevden yapı adresini almak MethodDesc için IP2MD komutunu kullanabilirsiniz.
DumpMT [-MD] <MethodTable adresi> Belirtilen bir adresteki bir yöntem tablosuyla ilgili bilgileri görüntüler. -MD seçeneğinin belirtilmesi, nesnesiyle tanımlanan tüm yöntemlerin listesini görüntüler.

Her bir yönetilen nesne bir yöntem tablosu işaretçisi içerir.
DumpModule [-mt] <Modül adresi> Belirtilen adresteki bir modülle ilgili bilgileri görüntüler. -mt seçeneği bir modülde tanımlanan türleri ve modül tarafından başvuruda bulunan türleri görüntüler

Bir modülün adresini almak için DumpDomain veya DumpAssembly komutunu kullanabilirsiniz.
DumpObj [-nofields] <nesne adresi>

-veya-

DO<nesne adresi>
Belirtilen adresteki bir nesneyle ilgili bilgileri görüntüler. DumpObj komutu alanları, yapı bilgilerini, EEClass yöntem tablosunu ve nesnenin boyutunu görüntüler.

Bir nesnenin adresini almak için DumpStackObjects komutunu kullanabilirsiniz.

DumpObj komutunu, aynı zamanda nesne oldukları için türdeki CLASS alanlarda çalıştırabilirsiniz.

-Nofields seçeneği, nesnenin alanlarının görüntülenmesini engeller; Dize gibi nesneler için kullanışlıdır.
DumpRuntimeTypes Çöp toplayıcı yığınındaki çalışma zamanı türü nesneleri görüntüler ve ilişkili tür adlarını ve yöntem tablolarını listeler.
DumpStack [-EE] [-n] [top stack [bottom stack]] Bir yığın izleme görüntüler.

-EE seçeneği DumpStack komutunun yalnızca yönetilen işlevleri görüntülemesine neden olur. top x86 platformlarında görüntülenen yığın çerçevelerini sınırlamak için ve bottom parametrelerini kullanın.

-n seçeneği, kaynak dosya adlarının ve satır numaralarının görüntülenmesini devre dışı bırakır. Hata ayıklayıcı için SYMOPT_LOAD_LINES seçeneği belirtildiyse, SOS yönetilen her çerçeve için simgelere bakar ve başarılı olursa, ilgili dosya adını ve satır numarasını görüntüler. Bu davranışı devre dışı bırakmak için -n (Satır numarası yok) parametresi belirtilebilir.
DumpSig<sigaddr><moduleaddr> Belirtilen adreste bir Sig yapı hakkındaki bilgileri görüntüler.
DumpSigElem<sigaddr><moduleaddr> Bir imza nesnesinin tek bir öğesini görüntüler. Çoğu durumda, tek tek imza nesnelerine bakmak için DumpSig kullanmalısınız. Ancak, bir imza bir şekilde bozulmuşsa, geçerli bölümlerini okumak için DumpSigElem kullanabilirsiniz.
DumpStackObjects [-verify] [top stack [bottom stack]]

-veya-

DSO [-verify] [top stack [bottom stack]]
Geçerli yığının sınırları içinde bulunan tüm yönetilen nesneleri görüntüler.

-verify seçeneği, bir nesne alanının statik CLASS olmayan alanlarını doğrular.

Yerel değişkenlerin ve parametrelerin değerlerini belirlemek için Clrstack komutuyla birlikte K (windbg) veya bt (lldb) gibi yığın izleme komutları ile DumpStackObject komutunu kullanın.
DumpVC<MethodTable adres><Adresi> Belirtilen adresteki bir değer sınıfının alanlarıyla ilgili bilgileri görüntüler.

MethodTable parametresi DumpVC komutunun alanları doğru yorumlamasına olanak tanır. Değer sınıfları, ilk alanları olarak bir yöntem tablosuna sahip değildir.
EEHeap [-gc] [-loader] İç çalışma zamanı veri yapıları tarafından kullanılan işlem belleği hakkındaki bilgileri görüntüler.

-gc ve -loader seçenekleri, bu komutun çıkışını çöp toplayıcı veya yükleyici veri yapılarına sınırlar.

Çöp toplayıcıya ilişkin bilgiler, yönetilen yığındaki her bir segmentin aralıklarını listeler. İşaretçi -gc tarafından verilen bir kesim aralığı içinde yer alırsa, işaretçi bir nesne işaretçisidir.
EEStack [-short] [-EE] İşlemdeki tüm iş parçacıklarında DumpStack komutunu çalıştırır.

-EE seçeneği doğrudan DumpStack komutuna geçirilir. -short parametresi çıkışı aşağıdaki iş parçacığı türleriyle sınırlar:

Kilit almış olan iş parçacıkları.

Çöp toplamaya olanak tanımak için durdurulmuş iş parçacıkları.

Yönetilen kodda bulunan iş parçacıkları.
EHInfo [<MethodDesc adresi>] [<Kod adresi>] Belirtilen bir yöntemdeki özel durum işleme bloklarını görüntüler. Bu komut yan tümce bloğu (blok) ve işleyici catch bloğu (tryblok) için kod adreslerini ve uzaklıklarını görüntüler.
SSS Sık sorulan soruları görüntüler. içinde dotnet-dumpdesteklenmez.
FinalizeQueue [-detail] | [-allReady] [-short] Sonlandırma için kaydolan tüm nesneleri görüntüler.

-detail seçeneği, temizlenmesi gerekenler SyncBlocks ve temizlemeyi bekleyen tüm RuntimeCallableWrappers (RCW'ler) hakkında ek bilgiler görüntüler. Bu veri yapılarının her ikisi de, çalıştığı zaman sonlandırıcı tarafından ön belleğe kaydedilir.

seçeneği -allReady , zaten çöp toplama tarafından bu şekilde işaretlenip işaretlenmediğine veya bir sonraki çöp toplama tarafından işaretlenmesine bakılmaksızın, sonlandırma için hazır olan tüm nesneleri görüntüler. "Sonlandırma için hazır" listesinde olan nesneler, artık köklü olmayan sonlandırılabilir nesnelerdir. Sonlandırılabilir kuyruklarda bulunan tüm nesnelerin hala köklü olduğunu doğruladığından, bu seçenek çok pahalı olabilir.

-short seçeneği çıkışı her nesnenin adresiyle sınırlar. -allReady ile birlikte kullanılırsa, artık köklenmemiş bir sonlandırıcısı olan tüm nesneleri numaralandırır. Bağımsız olarak kullanılırsa, sonlandırılabilir ve "sonlandırmaya hazır" kuyruklardaki tüm nesneleri listeler.
FindAppDomain<Nesne adresi> Belirtilen adresteki bir nesnenin uygulama etki alanını belirler.
FindRoots -gen<N> | -gen any |<nesne adresi> Belirtilen oluşturmanın sonraki toplamasında, hata ayıklayıcının hatası ayıklanan öğeyi yarıda kesmesine neden olur. Kesme oluşur oluşmaz, etki sıfırlanır. Sonraki toplamayı kesmek için, komutu tekrar vermeniz gerekir. <Bu komutun nesne adresi> formu, -gen veya -gen herhangi bir oluştuktan sonra kullanılır. Bu sırada, geçerli kınanan nesillerdeki nesnelerin köklerini belirlemek için FindRoots için hata ayıklama işlemi doğru durumdadır. Yalnızca Windows'ta desteklenir.
GCHandles [-perdomain] İşlemdeki çöp toplayıcı tanıtıcılarıyla ilgili istatistikleri görüntüler.

-perdomain seçeneği istatistikleri uygulama etki alanına göre düzenler.

Çöp toplayıcı tutamacı sızıntılarının neden olduğu bellek sızıntılarını bulmak için GCHandles komutunu kullanın. Örneğin, kesin olarak belirlenmiş bir çöp toplayıcı tanıtıcısı hala onu işaret ettiği için kod büyük bir diziyi tuttuğunda, bir bellek sızıntısı olur ve tanıtıcı onu serbest bırakmadan atılır.

Yalnızca Windows'ta desteklenir.
GCHandleLeaks Kesin olarak belirlenmiş ve iliştirilmiş çöp toplayıcı tanıtıcılarına yapılan başvurular için bellekte arama yapar ve sonuçları görüntüler. Bir tanıtıcı bulunursa GCHandleLeaks komutu başvurunun adresini görüntüler. Bellekte bir tanıtıcı bulunmazsa, bu komut bir bildirim görüntüler. Yalnızca Windows'ta desteklenir.
GCInfo<MethodDesc adresi><Kod adresi> Kayıt defterlerinin ve yığın konumlarının yönetilen nesneleri ne zaman içerdiğini gösteren verileri görüntüler. Bir çöp toplama olursa, onları yeni nesne işaretçisi değerleriyle güncelleştirebilmesi için, toplayıcı nesnelere yapılan başvuruların konumlarını bilmelidir.
GCRoot [-nostacks] [-all] <Nesne adresi> Belirtilen adresteki bir nesneye yapılan başvurularla (veya köklerle) ilgili bilgi görüntüler.

GCRoot komutu, yönetilen yığının tamamını ve tanıtıcı tablosunu yığındaki diğer nesneler ve tanıtıcılar içindeki tanıtıcılar için inceler. Sonra, her bir yığında nesne işaretçileri aranır ve sonlandırıcı kuyruğunda da arama yapılır.

Bu komut, bir yığın kökünün geçerli veya atılmış olduğunu belirlemez. Yığın kökü hala kullanımda olup olmadığını belirlemek için yerel veya bağımsız değişken değerinin ait olduğu çerçeveyi sökmek için clrstack ve U komutlarını kullanın.

-nostacks seçeneği, aramayı çöp toplayıcı tutamaçları ve erişilebilir nesnelerle kısıtlar.

-all seçeneği, yalnızca benzersiz kökler yerine tüm köklerin görüntülenmesini zorlar.
GCWhere <nesne adresi> Geçirilen bağımsız değişkenin çöp toplama yığınındaki konumu ve büyüklüğü görüntüler. Bağımsız değişken yönetilen yığında yer aldığında, fakat geçerli bir nesne adresi olmadığında, büyüklük 0 (sıfır) olarak görüntülenir.
Yardım (soshelp) [<command>] [faq] Parametre belirtilmediğinde kullanılabilir olan tüm komutları görüntüler veya belirli komutla ilgili ayrıntılı yardım bilgilerini görüntüler.

parametresi, faq sık sorulan soruların yanıtlarını görüntüler.
HeapStat [-inclUnrooted-iu | ] Her bir yığın için oluşturma büyüklüğünü ve her bir yığındaki her bir oluşturmada bulunan toplam boş alanı görüntüler. -inclUnrooted seçeneği belirtilirse, rapor artık köklenmemiş çöp toplama yığınından yönetilen nesneler hakkında bilgi içerir. Yalnızca Windows'ta desteklenir.
HistClear Komut ailesi Hist tarafından kullanılan tüm kaynakları serbest bırakır.

Genellikle, her HistInit birinin önceki kaynakları temizlemesi nedeniyle açıkça çağrısı HistClearyapmanız gerekmez.
HistInit Hatası ayıklanana kaydedilen yük günlüğünden SOS yapılarını başlatır.
HistObj <obj_address> Tüm yük günlüğü yeniden yerleştirme kayıtlarını inceler ve bir bağımsız değişken olarak geçirilen adrese yönlendirebilecek çöp toplama yeniden konumlandırmaları zincirini görüntüler.
HistObjFind <obj_address> Belirtilen adresteki bir nesneye başvuran tüm günlük girişlerini görüntüler.
HistRoot <kökü> Belirtilen kökün tanıtımlarıyla ve yeniden konumlandırılmalarıyla ilişkili bilgileri görüntüler.

Kök değeri, bir nesnenin çöp toplamalar içindeki hareketini izlemek için kullanılabilir.
IP2MD (ip2md) <Kod adresi> MethodDesc JIT ile derlenmiş kodda belirtilen adresteki yapıyı görüntüler.
ListNearObj (lno) <obj_address> Belirtilen adresten önceki ve sonraki nesneleri görüntüler. Komut, yönetilen bir nesnenin (geçerli bir yöntem tablosuna dayalı olarak) ve bağımsız değişken adresini izleyen nesnenin geçerli bir başlangıcı gibi görünen çöp toplama yığınında adresi arar. Yalnızca Windows'ta desteklenir.
MinidumpMode [0] [1] Bir mini döküm kullanırken, güvenli olmayan komutların çalışmasını önler.

Bu özelliği devre dışı bırakmak için 0 veya bu özelliği etkinleştirmek için 1'i geçirin. Varsayılan olarak MinidumpMode değeri 0 olarak ayarlanır.

.dump /m komutu veya .dump komutuyla oluşturulan minidumlar CLR'ye özgü verileri sınırlandırır ve SOS komutlarının yalnızca bir alt kümesini doğru çalıştırmanıza olanak sağlar. Gerekli bellek alanları eşleşmediğinden veya kısmen eşleştiğinden, bazı komutlar beklenmeyen hatalarla başarısız olabilir. Bu seçenek, mini dökümlere karşı güvenli olmayan komutları çalıştırmaktan sizi korur.

Yalnızca Windbg ile desteklenir.
Name2EE (name2ee) <modül adı><türü veya yöntem adı>

-veya-

Name2EE<modül adı!<>tür veya yöntem adı>
Belirtilen modülde MethodTable belirtilen türün veya yöntemin yapısını ve EEClass yapısını görüntüler.

Belirtilen modülün işlemde yüklenmesi gerekir.

Uygun tür adını almak için Ildasm.exe (IL Disassembler) kullanarak modüle göz atın. Ayrıca, yüklenen tüm yönetilen modülleri aramak için modül adı parametresi olarak geçirebilirsiniz * . Modül adı parametresi, veya image00400000gibi mscorlib bir modülün hata ayıklayıcısının adı da olabilir.

Bu komut, windows hata ayıklayıcısı söz dizimini <<>module>!typedestekler. Tür, tam olarak nitelenmiş olmalıdır.
ObjSize [<Nesne adresi>] | [-toplama] [-stat] Belirtilen nesnenin boyutunu görüntüler. Herhangi bir parametre belirtmezseniz, ObjSize komutu yönetilen iş parçacıklarında bulunan tüm nesnelerin boyutunu görüntüler, işlemdeki tüm çöp toplayıcı tutamaçlarını görüntüler ve bu tanıtıcıların işaret ettiği nesnelerin boyutunun toplamını alır. ObjSize komutu, üst nesneye ek olarak tüm alt nesnelerin boyutunu içerir.

-aggregate seçeneği, hala kök olarak bulunan türlerin ayrıntılı bir görünümünü almak için -stat bağımsız değişkeniyle birlikte kullanılabilir. !dumpheap -stat ve !objsize -aggregate -stat kullanarak, hangi nesnelerin artık köklü olmadığını belirleyebilir ve çeşitli bellek sorunlarını tanılayabilirsiniz.

Yalnızca Windows'ta desteklenir.
PrintException [-nested] [-lines] [<Exception object address>]

-veya-

PE [iç içe] [<Özel durum nesne adresi>]
Belirtilen adreste sınıfından türetilen herhangi bir nesnenin Exception alanlarını görüntüler ve biçimlendirebilir. Bir adres belirtmezseniz, PrintException komutu geçerli iş parçacığında oluşan son özel durumu görüntüler.

-nested seçeneği iç içe özel durum nesneleri hakkındaki ayrıntıları görüntüler.

-lines seçeneği, varsa kaynak bilgilerini görüntüler.

İkili dizi olan alanı biçimlendirmek ve görüntülemek _stackTrace için bu komutu kullanabilirsiniz.
ProcInfo [-env] [-time] [-mem] İşlem, çekirdek CPU süresi ve bellek kullanımı istatistikleri için ortam değişkenlerini görüntüler. Yalnızca Windbg ile desteklenir.
RCWCleanupList<RCWCleanupList adresi> Belirtilen adreste temizlenmeyi bekleyen çalışma zamanı çağrılabilir sarmalayıcılarının listesini görüntüler. Yalnızca Windbg ile desteklenir.
SaveModule<Temel adresi><Dosya Adı> Belirtilen adreste belleğe yüklenen bir görüntüyü belirtilen dosyaya yazar. Yalnızca Windbg ile desteklenir.
SetHostRuntime [<runtime-directory>] Bu komut, hata ayıklayıcıda (lldb) SOS'nin bir parçası olarak çalışan yönetilen kodu barındırmak için kullanılacak .NET çalışma zamanının yolunu ayarlar. Çalışma zamanının en az 2.1.0 veya üzeri bir sürüm olması gerekir. Dizinde boşluklar varsa, tek tırnak (') olması gerekir.

Normalde SOS, yönetilen kodunu otomatik olarak çalıştırmak için yüklü bir .NET çalışma zamanını bulmaya çalışır, ancak başarısız olursa bu komut kullanılabilir. Varsayılan değer, hata ayıklanan aynı çalışma zamanını (libcoreclr) kullanmaktır. Hata ayıklanan varsayılan çalışma zamanı SOS kodunu çalıştıracak kadar çalışmıyorsa veya sürüm 2.1.0'dan küçükse bu komutu kullanın.

SOS komutunu çalıştırırken aşağıdaki hata iletisini aldıysanız, yolu 2.1.0 veya üzeri .NET çalışma zamanına ayarlamak için bu komutu kullanın.

(lldb) clrstack
Error: Fail to initialize CoreCLR 80004005 ClrStack failed

(lldb) sethostruntime /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.6

Yüklü bir .NET çalışma zamanının yolunu bulmak için komut kabuğunda "dotnet --info" kullanabilirsiniz.
SetSymbolServer [-ms] [-disable] [-log] [-loadsymbols] [-cache<cache-path>] [-directory<search-directory>] [-sympath<windows-symbol-path>] [<symbol-server-URL>] Sembol sunucusunun indirme desteğini etkinleştirir.

-ms seçeneği, genel Microsoft sembol sunucusundan indirmeyi etkinleştirir.

-disable seçeneği sembol indirme desteğini açar.

-cache<cache-path> seçeneği bir sembol önbellek dizini belirtir. Belirtilmezse varsayılan değer $HOME/.dotnet/symbolcache'dir.

-directory seçeneği, sembolleri aramak için bir yol ekler. Birden fazla olabilir.

-sympath seçeneği Windows sembol yolu biçiminde sunucu, önbellek ve dizin yolları ekler.

-log seçeneği simge indirme günlüğünü etkinleştirir.

-loadsymbols seçeneği çalışma zamanı için yerel .NET simgelerini indirmeye çalışır. lldb ve dotnet-dump üzerinde desteklenir.
SOSFlush Bir iç SOS önbelleğini temizler.
SOSStatus [-reset] İç SOS durumunu görüntüler veya önbelleğe alınmış iç durumu sıfırlar.
StopOnException [-derived] [-create-create2 | ] <Özel durum><Sahte kayıt numarası> Belirtilen özel durum oluştuğunda hata ayıklayıcının durmasına, fakat diğer özel durumlar oluştuğunda çalışmaya devam etmesine neden olur.

-derived seçeneği belirtilen özel durumu ve belirtilen özel durumdan türetilen her özel durumu yakalar.

Yalnızca Windbg ile desteklenir.
SyncBlk [-all | <syncblk numarası>] Belirtilen SyncBlock yapıyı veya tüm SyncBlock yapıları görüntüler. Herhangi bir bağımsız değişken geçirmezseniz, SyncBlk komutu bir iş parçacığına SyncBlock ait nesnelere karşılık gelen yapıyı görüntüler.

SyncBlock Yapı, her nesne için oluşturulması gerekmeyen ek bilgilere yönelik bir kapsayıcıdır. COM birlikte çalışabilirlik verilerini, karma kodları ve güvenli iş parçacığı işlemlerine ilişkin kilitleme bilgilerini tutabilir.
ThreadPool Kuyruktaki iş isteklerinin sayısı, derleme bağlantı noktası iş parçacıklarının sayısı ve zamanlayıcıların sayısı dahil, yönetilen iş parçacığı havuzuyla ilgili bilgileri görüntüler.
İş parçacıkları (clrthreads) [-live] [-special] İşlemdeki tüm yönetilen iş parçacıklarını görüntüler.

İş Parçacıkları komutu hata ayıklayıcı kısaltma kimliğini, CLR iş parçacığı kimliğini ve işletim sistemi iş parçacığı kimliğini görüntüler. Buna ek olarak, İş Parçacıkları komutu bir iş parçacığının yürütülmekte olduğu uygulama etki alanını gösteren bir Etki Alanı sütunu, COM daire modunu görüntüleyen bir APT sütunu ve iş parçacığında atılan son özel durumu görüntüleyen bir Özel Durum sütunu görüntüler.

-live seçeneği, canlı bir iş parçacığıyla ilişkili iş parçacıklarını görüntüler.

-special seçeneği CLR tarafından oluşturulan tüm özel iş parçacıklarını görüntüler. Özel iş parçacıkları çöp toplama iş parçacıklarını (eşzamanlı ve sunucu çöp toplamada), hata ayıklayıcı yardımcı iş parçacıklarını, sonlandırıcı iş parçacıklarını, AppDomain kaldırma iş parçacıklarını ve iş parçacığı havuzu zamanlayıcı iş parçacıklarını içerir.
ThreadState < State değer alanı > Bir iş parçacığının durumunu görüntüler. value parametresi, İş Parçacıkları rapor çıkışındaki alanın değeridirState.
Token2EE<modül adı><belirteci> Belirtilen modülde belirtilen meta veri belirtecini bir MethodTable yapıya veya MethodDesc yapıya dönüştürür.

Yüklenen her yönetilen modülde belirtecin neyle eşlendiğini bulmak için modül adı parametresini geçirebilirsiniz * . Veya gibi mscorlib image00400000bir modül için hata ayıklayıcının adını da geçirebilirsiniz.
U [-gcinfo] [-ehinfo] [-n] <MethodDesc adresi> | <Kod adresi> Yöntemin yapı işaretçisi veya yöntem gövdesindeki bir kod adresi tarafından MethodDesc belirtilen yönetilen bir yöntemin açıklamalı ayrıştırmasını görüntüler. U komutu, meta veri belirteçlerini adlara dönüştüren ek açıklamalarla baştan sona tüm yöntemi görüntüler.

-gcinfo seçeneği, U komutunun yöntemin GCInfo yapısını görüntülemesine neden olur.

-ehinfo seçeneği yöntemi için özel durum bilgilerini görüntüler. Bu bilgileri EHInfo komutuyla da edinebilirsiniz.

-n seçeneği, kaynak dosya adlarının ve satır numaralarının görüntülenmesini devre dışı bırakır. Hata ayıklayıcı için SYMOPT_LOAD_LINES seçeneği belirtildiyse, SOS yönetilen her çerçeve için simgelere bakar ve başarılı olursa, ilgili dosya adını ve satır numarasını görüntüler. Bu davranışı devre dışı bırakmak için -n seçeneğini belirtebilirsiniz.
VerifyHeap Bozulma işaretleri için çöp toplayıcı yığınını kontrol eder ve bulunan hataları görüntüler.

Yığın bozulmalarına, hatalı oluşturulan platform çağrıları neden olabilir.
VerifyObj<nesne adresi> Bir bağımsız değişken olarak geçirilen nesnede bozulma işaretleri olup olmadığını kontrol eder. Yalnızca Windows'ta desteklenir.
VMMap Sanal adres alanını bir uçtan diğerine dolaşır ve her bir bölgeye uygulanan koruma türünü görüntüler. Yalnızca Windbg ile desteklenir.
VMStat Sanal adres alanının bir özet görünümü, o belleğe (serbest, ayrılmış, adanmış, özel, eşlenmiş, görüntü) uygulanan her bir koruma türüne göre düzenlenmiş olarak sağlar. TOPLAM sütunu, ORTALAMA sütununun sonucunu BLK SAYIMI sütunuyla çarpılmış olarak görüntüler. Yalnızca Windbg ile desteklenir.

Dotnet-Dump

ile dotnet-dump analyzekullanılabilen SOS komutlarının listesi için bkz . dotnet-dump.

Windows Hata Ayıklayıcısı

Ayrıca, SOS hata ayıklama uzantısını WinDbg/dbg hata ayıklayıcısına yükleyip Windows hata ayıklayıcısı içinde komutlar yürüterek de kullanabilirsiniz. SOS komutları canlı işlemlerde veya dökümlerde kullanılabilir.

Hata ayıklanan işlem .NET çalışma zamanını (coreclr.dll veya libcoreclr.so) içerdiğinde Windbg SOS uzantısını otomatik olarak yüklemelidir.

LLDB Hata Ayıklayıcısı

LLDB için SOS yapılandırma yönergeleri için bkz . dotnet-sos. SOS komutları canlı işlemlerde veya dökümlerde kullanılabilir.

Varsayılan olarak şunu girerek tüm SOS komutlarına ulaşabilirsiniz: sos [command_name]. Ancak, önek gerekmemesi için yaygın komutlar diğer adla verilmiştir sos :

Command İşlev
analyzeoom GC yığınına bir ayırma isteğinde gerçekleşen son OOM'un bilgilerini görüntüler.
bpmd Belirtilen modülde belirtilen yönetilen yöntemde bir kesme noktası oluşturur.
clrmodules İşlemdeki yönetilen modülleri listeler.
clrstack Yalnızca bir yönetilen kodların bir yığın izlemesini sağlar.
clrthreads Çalışan yönetilen iş parçacıklarını listeler.
clru Yönetilen yöntemin açıklamalı bir ayrıştırma durumunu görüntüler.
dbgout İç SOS günlüğünü etkinleştirir/devre dışı bırakır-off.
dso Geçerli yığının sınırları içinde bulunan tüm yönetilen nesneleri görüntüler.
dumpalc Belirtilen nesnenin yüklendiği collectible AssemblyLoadContext hakkındaki ayrıntıları görüntüler.
dumparray Yönetilen dizi hakkındaki ayrıntıları görüntüler.
dumpasync Atık olarak toplanan yığındaki zaman uyumsuz durum makineleri hakkındaki bilgileri görüntüler.
dumpassembly Derlemeyle ilgili ayrıntıları görüntüler.
dumpclass Belirtilen adreste EEClass yapı hakkındaki bilgileri görüntüler.
dumpconcurrentdictionary Eşzamanlı sözlük içeriğini görüntüler.
dumpconcurrentqueue Eşzamanlı kuyruk içeriğini görüntüler.
dumpdelegate Temsilci hakkındaki bilgileri görüntüler.
dumpdomain Tüm AppDomains veya belirtilen içindeki tüm derlemeler hakkındaki bilgileri görüntüler.
dumpgcdata GC verileri hakkındaki bilgileri görüntüler.
dumpgen Belirtilen nesil için yığın içeriğini görüntüler.
dumpheap Atık olarak toplanan yığın hakkındaki bilgileri ve nesnelerle ilgili toplama istatistiklerini görüntüler.
dumpil Yönetilen bir yöntemle ilişkili ortak ara dili (CIL) görüntüler.
dumplog Bir bellek içi yük günlüğünün içeriğini belirtilen dosyaya yazar.
dumpmd Belirtilen adreste MethodDesc yapı hakkındaki bilgileri görüntüler.
dumpmodule Belirtilen adreste modül hakkındaki bilgileri görüntüler.
dumpmt Belirtilen adreste yöntem tablosu hakkındaki bilgileri görüntüler.
dumpobj Belirtilen adreste nesnenin bilgilerini görüntüler.
dumpruntimetypes GC yığınındaki tüm System.RuntimeType nesnelerini bulur ve başvurdıkları tür adını ve MethodTable'ı da yazdırır.
dumpsig tarafından <sigaddr> <moduleaddr>belirtilen bir yöntemin veya alanın imzasını dökümünü alır.
dumpsigelem İmza nesnesinin tek bir öğesinin dökümünü alır.
dumpstack Yerel ve yönetilen yığın izlemesi görüntüler.
dumpstackobjects Geçerli yığının sınırları içinde bulunan tüm yönetilen nesneleri görüntüler.
dumpvc Değer sınıfının alanları hakkındaki bilgileri görüntüler.
eeheap İç çalışma zamanı veri yapıları tarafından kullanılan işlem belleği hakkındaki bilgileri görüntüler.
eestack İşlemdeki tüm iş parçacıklarında çalışır dumpstack .
eeversion Çalışma zamanı ve SOS sürümleri hakkındaki bilgileri görüntüler.
ehinfo JIT-ed yönteminde özel durum işleme bloklarını görüntüler.
finalizequeue Sonlandırma için kaydolan tüm nesneleri görüntüler.
findappdomain Bir GC nesnesinin AppDomain'ini çözümlemeye çalışır.
findroots GC koleksiyonları genelinde nesne köklerini bulur ve görüntüler.
gchandles İşlemdeki çöp toplayıcı tanıtıcılarıyla ilgili istatistikleri görüntüler.
gcheapstat Çöp toplayıcı hakkındaki istatistikleri görüntüler.
gcinfo Bir yöntem için JIT GC kodlamasını görüntüler.
gcroot Belirtilen adreste nesneye yapılan başvurular (veya kökler) hakkındaki bilgileri görüntüler.
gcwhere Belirtilen adresin GC yığınındaki konumu görüntüler.
histclear Hist komutları ailesi tarafından kullanılan tüm kaynakları serbest bırakır.
histinit Hatası ayıklanana kaydedilen yük günlüğünden SOS yapılarını başlatır.
histobj Tüm yük günlüğü yeniden yerleştirme kayıtlarını inceler ve bir bağımsız değişken olarak geçirilen adrese yönlendirebilecek çöp toplama yeniden konumlandırmaları zincirini görüntüler.
histobjfind Belirtilen adreste nesneye başvuran tüm günlük girdilerini görüntüler.
histroot Belirtilen kökün tanıtımlarıyla ve yeniden konumlandırılmalarıyla ilişkili bilgileri görüntüler.
histstats Stres günlüğü istatistiklerini görüntüler.
ip2md MethodDesc JIT ile derlenmiş kodda belirtilen adresteki yapıyı görüntüler.
listnearobj Belirtilen adresin önündeki ve sonrasındaki nesneyi görüntüler.
loadsymbols .NET yerel modül simgelerini yükler.
logging İç SOS günlüğünü etkinleştirir/devre dışı bırakır.
name2ee Belirtilen modülde MethodTable belirtilen tür veya yöntem için ve EEClass yapılarını görüntüler.
objsize Belirtilen nesnenin boyutunu görüntüler.
parallelstacks Birleştirilmiş iş parçacıkları yığınını Visual Studio 'Paralel Yığınlar' paneline benzer şekilde görüntüler.
pathto gc yolunu ile <root> <target>görüntüler.
pe Belirtilen adreste sınıfından türetilen herhangi bir nesnenin Exception alanlarını görüntüler ve biçimlendirebilir.
printexception Belirtilen adreste sınıfından türetilen herhangi bir nesnenin Exception alanlarını görüntüler ve biçimlendirebilir.
runtimes Hedefteki çalışma zamanlarını listeler veya varsayılan çalışma zamanını değiştirir.
stoponcatch Hedef işlem, yürütme sırasında bir sonraki yönetilen özel durum yakalanışında bozulacaktır.
setclrpath Coreclr dac/dbi dosyalarını yüklemek için yolu ayarlar. setclrpath <path>.
sethostruntime SOS'ta yönetilen kodu çalıştırmak için kullanılacak .NET çalışma zamanı dizinini ayarlar veya görüntüler.
setsymbolserver Sembol sunucusu desteğini etkinleştirir.
setsostid Geçerli işletim sistemi tid/iş parçacığı dizinini lldb'nin sağladığı bir dizin yerine ayarlar. setsostid <tid> <index>.
sos Çeşitli coreclr hata ayıklama komutlarını yürütür. söz dizimini sos <command-name> <args>kullanın. Daha fazla bilgi için bkz. 'soshelp'.
soshelp Parametre belirtilmediğinde tüm kullanılabilir komutları görüntüler veya belirtilen komut hakkında ayrıntılı yardım bilgilerini görüntüler: soshelp <command>.
syncblk SyncBlock tutucu bilgilerini görüntüler.
taskstate Görev durumunu okunabilir bir biçimde görüntüler.
threadpool Çalışma zamanı iş parçacığı havuzu hakkındaki bilgileri görüntüler.
threadpoolqueue Kuyruğa alınmış iş parçacığı havuzu iş öğelerini görüntüler.
threadstate Bir iş parçacığı durumunun anlamını oldukça yazdırır.
timerinfo Zamanlayıcıları çalıştırma hakkındaki bilgileri görüntüler.
token2ee Belirtilen belirteç ve modül için MethodTable yapısını ve MethodDesc yapısını görüntüler.
traverseheap Yığın bilgilerini CLR Profiler tarafından anlaşılan bir biçimde bir dosyaya yazar.
verifyheap GC yığınında bozulma belirtileri olup olmadığını denetler.
verifyobj Bir bağımsız değişken olarak geçirilen nesnede bozulma işaretleri olup olmadığını kontrol eder.

Windbg/cdb örnek kullanımı

Komut Açıklama
!dumparray -start 2 -length 5 -details 00ad28d0 adresinde 00ad28d0bir dizinin içeriğini görüntüler. Görüntü ikinci öğeden başlar ve beş öğe boyunca devam eder.
!dumpassembly 1ca248 adresinde 1ca248bir derlemenin içeriğini görüntüler.
!dumpheap Çöp toplayıcı yığını hakkındaki bilgileri görüntüler.
!DumpLog Bellek içi stres günlüğünün içeriğini geçerli dizindeki StressLog.txt adlı bir (varsayılan) dosyaya yazar.
!dumpmd 902f40 MethodDesc adresinde 902f40yapısını görüntüler.
!dumpmodule 1caa50 adresinde 1caa50bir modül hakkındaki bilgileri görüntüler.
!DumpObj a79d40 adresinde a79d40bir nesne hakkındaki bilgileri görüntüler.
!DumpVC 0090320c 00a79d9c adresindeki yöntem tablosunu 0090320ckullanarak adreste 00a79d9c bir değer sınıfının alanlarını görüntüler.
!eeheap -Gc Çöp toplayıcı tarafından kullanılan işlem belleğini görüntüler.
!finalizequeue Sonlandırma için zamanlanmış tüm nesneleri görüntüler.
!findappdomain 00a79d98 adresinde 00a79d98bir nesnenin uygulama etki alanını belirler.
!gcinfo 5b68dbb8 Geçerli işlemdeki tüm çöp toplayıcı tutamaçlarını görüntüler.
!name2ee unittest.exe MainClass.Main modülündeki MethodTable unittest.exesınıfında MainClass yönteminin ve EEClass yapılarını Main görüntüler.
!token2ee unittest.exe 02000003 modülündeki unittest.exeadreste 02000003 meta veri belirteci hakkındaki bilgileri görüntüler.

LLDB örnek kullanımı

Komut Açıklama
dumparray -start 2 -length 5 -details 00ad28d0 adresinde 00ad28d0bir dizinin içeriğini görüntüler. Görüntü ikinci öğeden başlar ve beş öğe boyunca devam eder.
dumpassembly 1ca248 adresinde 1ca248bir derlemenin içeriğini görüntüler.
dumpheap Çöp toplayıcı yığını hakkındaki bilgileri görüntüler.
dumplog Bellek içi stres günlüğünün içeriğini geçerli dizindeki StressLog.txt adlı bir (varsayılan) dosyaya yazar.
dumpmd 902f40 MethodDesc adresinde 902f40yapısını görüntüler.
dumpmodule 1caa50 adresinde 1caa50bir modül hakkındaki bilgileri görüntüler.
dumpobj a79d40 adresinde a79d40bir nesne hakkındaki bilgileri görüntüler.
dumpvc 0090320c 00a79d9c adresindeki yöntem tablosunu 0090320ckullanarak adreste 00a79d9c bir değer sınıfının alanlarını görüntüler.
eeheap -gc Çöp toplayıcı tarafından kullanılan işlem belleğini görüntüler.
findappdomain 00a79d98 adresinde 00a79d98bir nesnenin uygulama etki alanını belirler.
gcinfo 5b68dbb8 Geçerli işlemdeki tüm çöp toplayıcı tutamaçlarını görüntüler.
name2ee unittest.exe MainClass.Main modülündeki MethodTable unittest.exesınıfında MainClass yönteminin ve EEClass yapılarını Main görüntüler.
token2ee unittest.exe 02000003 modülündeki unittest.exeadreste 02000003 meta veri belirteci hakkındaki bilgileri görüntüler.
clrthreads Yönetilen iş parçacıklarını görüntüler.

Ayrıca bkz.