Aracılığıyla paylaş


.NET hata ayıklayıcısı uzantıları

.NET hata ayıklayıcısı uzantıları 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ılar Windbgile önceden yüklenmiştir ve LLDB ile kullanılmak üzere indirilebilir. .NET hata ayıklayıcısı uzantılarını kullanarak:

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

.NET hata ayıklayıcısı uzantıları, mevcut dotnet-sos aracının komutlarının yanı sıra yeni komutları içerir. Yerel AOT çalışma zamanı için sınırlı sayıda komut da desteklenmektedir.

Sözdizimi

Windbg altında: ![command] [options]

LLDB altında: sos [command] [options]

Komutların çoğunun LLDB altında diğer adları veya kısayolları vardır: clrstack [options]

Komut

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

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

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

Bekleyen kesme noktalarının listesini yönetmek için -list, -clearve -clearall seçeneklerini kullanabilirsiniz:

-list seçeneği, bekleyen tüm kesme noktalarının listesini oluşturur. Bekleyen bir kesme noktası sıfır olmayan bir modül kimliğine sahipse, bu kesme noktası o yüklenen modüldeki bir işleve özgüdür. Bekleyen kesme noktası sıfır modül kimliğine sahipse, bu kesme noktası henüz yüklenmemiş modüller için geçerlidir.

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 yönetilen kodun yığın izlemesini sağlar.

-p seçeneği yönetilen işleve yönelik bağımsız değişkenleri gösterir.

-l seçeneği, çerçevedeki yerel değişkenlerle ilgili bilgileri gösterir. .NET hata ayıklayıcısı uzantıları yerel adları alamadığından, yerel adların çıktısıyerel adresdeğer biçimindedir.

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

-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ıda SYMOPT_LOAD_LINES seçeneği belirtilmişse, SOS yönetilen her çerçevenin simgelerini arar ve başarılı olursa ilgili kaynak 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çeveler ve yönetilen çerçeveler için derleme adı ve işlev uzaklığı ile iç içe geçmiş yerel çerçeveleri görüntüler. Bu seçenek, dotnet-dumpile kullanıldığında yerel çerçeveleri görüntülemez.

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

-all seçeneği tüm yönetilen iş parçacıklarının yığınlarını döküm eder.
comstate Her iş parçacığı için COM daire modelini ve varsa bir Context işaretçisini 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 nesne adresi>
Dizi nesnesinin öğelerini inceler.

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

uzunluk 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, atık olarak toplanan yığının çapraz geçişini sağlar ve zaman uyumsuz bir yöntemin durumu yığına aktarıldığında oluşturulan zaman uyumsuz durum makinelerini temsil eden nesneleri arar. Bu komut, async void, async Task, async Task<T>, async ValueTaskve async ValueTask<T>olarak tanı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.

Yerel AOT uygulamaları için desteklenir.
DumpAssembly<derleme adresi> Derleme hakkındaki 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 EEClass yapısı hakkındaki 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.

EEClass yapı adresi almak için DumpMT, DumpObj, Name2EEveya Token2EE komutunu kullanın.
DumpDomain [<etki alanı adresi>] Belirtilen AppDomain nesne adresi içinde yüklenen her Assembly nesnesini numaralandırır. DumpDomain komutu, bir işlemdeki tüm AppDomain nesneleri listeler. .NET (Core) yalnızca bir AppDomainolduğundan DumpDomain yalnızca bir nesne döndürür.
DumpHeap [-stat] [-strings] [-short] [-min<boyutu>] [-max<boyutu>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable adresi>] [-type<kısmi tür adı>] [start [end]] Atık olarak toplanan yığın hakkındaki 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 bir dize değeri özetiyle kısıtlar.

-short seçeneği çıkışı yalnızca her nesnenin adresiyle sınırlar. Bu komut, komutundan çıktıyı otomasyon için başka bir hata ayıklayıcı komutuna kolayca kanal oluşturmanızı sağlar.

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

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

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

-startAtLowerBound seçeneği yığın 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şındığından yığın genellikle izlenemez. Bu seçenek DumpHeap belirtilen alt sınırda yürümeye başlamaya zorlar. Bu seçeneğin çalışması için alt sınır olarak geçerli bir nesnenin adresini sağlamanız gerekir. Sonraki yöntem tablosunu el ile bulmak için hatalı bir nesnenin adresinde belleği görüntüleyebilirsiniz. Çöp toplama şu anda memcopyçağrısındaysa, boyutu parametre olarak sağlanan başlangıç adresine ekleyerek sonraki nesnenin adresini de bulabilirsiniz.

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

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

start parametresi belirtilen adresten listelemeye başlar.

end parametresi belirtilen adreste listelemeyi durdurur.

Yerel AOT uygulamaları için desteklenir.
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.
DumpLock [--allthreads] [--waits] System.Threading.Lock nesneleri hakkında, iş parçacıkları tarafından tutulanlar (varsayılan) veya iş parçacıkları tarafından bekletilmekte olanlar gibi bilgileri görüntüler.
DumpLog [-addr<addressOfStressLog>] [<Filename>] Bellek içi stres 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 stres günlüğü, kilit veya G/Ç kullanmadan stres hatalarını tanılamanıza yardımcı olur. Stres günlüğünü etkinleştirmek için aşağıdaki kayıt defteri anahtarlarını HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFrameworkaltında ayarlayın:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

İsteğe bağlı -addr seçeneği, varsayılan günlük dışında bir stres günlüğü belirtmenize olanak tanır.

Yerel AOT uygulamaları için desteklenir.
DumpMD<MethodDesc adresi> Belirtilen adreste MethodDesc yapısı hakkındaki bilgileri görüntüler.

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

Her yönetilen nesne bir yöntem tablosu işaretçisi içerir.
DumpModule [-mt] <Modül adresi> Belirtilen adreste bir modül hakkındaki 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 adreste bir nesne hakkındaki bilgileri görüntüler. DumpObj komutu alanları, EEClass yapısı bilgilerini, yöntem tablosunu ve nesnenin boyutunu görüntüler.

Bir nesnenin adresini almak için DumpStackObjects komutunu kullanabilirsiniz.

DumpObj komutunu CLASS türündeki alanlarda çalıştırabilirsiniz çünkü bunlar da nesnedir.

- alan yok seçeneği nesnenin alanlarının görüntülenmesini engeller; Dize gibi nesneler için kullanışlıdır.
DumpRuntimeTypes Atık toplayıcı yığınındaki çalışma zamanı türü nesnelerini görüntüler ve ilişkili tür adlarını ve yöntem tablolarını listeler.
DumpStack [-EE] [-n] [topstack [bottomstack]] Yığın izlemesi görüntüler.

-EE seçeneği, DumpStack komutunun yalnızca yönetilen işlevleri görüntülemesine neden olur. x86 platformlarında görüntülenen yığın çerçevelerini sınırlamak için top 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ıda SYMOPT_LOAD_LINES seçeneği belirtilmişse, SOS her yönetilen çerçevenin simgelerini arar ve başarılı olursa ilgili kaynak 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 Sig yapısı hakkındaki bilgileri görüntüler.
DumpSigElem<sigaddr><moduleaddr> İmza nesnesinin tek bir öğesini görüntüler. Çoğu durumda, tek tek imza nesnelerine bakmak için DumpSig kullanmanız gerekir. Ancak, bir imza bir şekilde bozulmuşsa, geçerli bölümlerini okumak için DumpSigElem kullanabilirsiniz.
DumpStackObjects [-verify] [topstack [bottomstack]]

-veya-

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

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

yerel değişkenlerin ve parametrelerin değerlerini belirlemek için DumpStackObject komutunu K (windbg) veya bt (lldb) gibi yığın izleme komutlarıyla birlikte clrstack komutunu kullanın.
DumpVC<MethodTable adresi><Adres> Belirtilen adreste bir değer sınıfının alanları hakkındaki bilgileri görüntüler.

MethodTable parametresi, DumpVC komutunun alanları doğru yorumlamasına olanak tanır. Değer sınıflarının ilk alanı olarak bir yöntem tablosu yoktur.
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ı bilgileri, yönetilen yığındaki her kesimin aralıklarını listeler. İşaretçi -gctarafından verilen bir kesim aralığı içindeyse, 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ış iş parçacıkları.

Çöp toplamaya izin vermek için durdurulan iş parçacıkları.

Şu anda yönetilen kodda olan iş parçacıkları.
EHInfo [<MethodDesc address>] [<Code address>] Belirtilen yöntemde özel durum işleme bloklarını görüntüler. Bu komut, yan tümce bloğu (try bloğu) ve işleyici bloğu (catch bloğu) için kod adreslerini ve uzaklıklarını görüntüler.
SSS Sık sorulan soruları görüntüler. dotnet-dumpdesteklenmez.
FinalizeQueue [-detail] | [-allReady] [-short] Sonlandırma için kaydedilen tüm nesneleri görüntüler.

ayrıntı seçeneği, temizlenmesi gereken SyncBlocks ve temizlemeyi bekleyen RuntimeCallableWrappers (RCW) hakkında ek bilgiler görüntüler. Bu veri yapılarının her ikisi de çalıştığında sonlandırıcı iş parçacığı tarafından önbelleğe alınır ve temizlenir.

-allReady seçeneği, zaten çöp toplama tarafından bu şekilde işaretlenmiş olmalarına veya bir sonraki çöp toplama işlemiyle işaretlenmelerine bakılmaksızın, sonlandırma için hazır olan tüm nesneleri görüntüler. "Sonlandırmaya hazır" listesinde yer alan nesneler artık köklenmemiş sonleştirilebilir nesnelerdir. Bu seçenek pahalı olabilir çünkü son haline getirilebilir kuyruklardaki tüm nesnelerin hala köklenip köklenmediğini doğrular.

-short seçeneği çıkışı her nesnenin adresiyle sınırlar. içinde -allReadyile kullanılıyorsa, 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" kuyruklarındaki tüm nesneleri listeler.
FindAppDomain<Nesne adresi> Belirtilen adreste bir nesnenin uygulama etki alanını belirler.
FindRoots-genN | -gen herhangi bir | nesne adresi Hata ayıklayıcının belirtilen neslin sonraki koleksiyonunda debuggee'de bozulmasına neden olur. Kesme gerçekleşir gerçekleşmez etki sıfırlanır. Sonraki koleksiyonda kesme yapmak için komutunu yeniden oluşturmanız gerekir. Bu komutun nesne adresi biçimi, -gen veya -gen'in neden olduğu kesmeden sonra kullanılır. Bu sırada debuggee, FindRoots geçerli kınanmış nesillerdeki nesnelerin köklerini tanımlamak için doğru durumdadır. Yalnızca Windows'ta desteklenir.
GCHandles [-perdomain] İşlemdeki çöp toplayıcı tutamaçlarıyla ilgili istatistikleri görüntüler.

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

Atık 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, güçlü bir çöp toplayıcı tutamacı onu işaret ettiğinden ve tanıtıcı serbest bırakmadan atıldığından kod büyük bir diziyi koruduğunda bellek sızıntısı oluşur.

Yalnızca Windows'ta desteklenir.
GCHandleLeaks Bellekte işlemdeki güçlü ve sabitlenmiş çöp toplayıcı tanıtıcılarına yapılan başvuruları arar 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ıtların veya yığın konumlarının yönetilen nesneler içerdiğini gösteren verileri görüntüler. Çöp toplama gerçekleşirse, toplayıcının nesneleri yeni nesne işaretçisi değerleriyle güncelleştirebilmesi için nesnelere yapılan başvuruların konumlarını bilmesi gerekir.
GCRoot [-nostacks] [-all] <Nesne adresi> Belirtilen adreste bir nesneye yapılan başvurular (veya kökler) hakkındaki bilgileri görüntüler.

GCRoot komutu, yığındaki diğer nesneler ve tanıtıcılar içindeki tanıtıcılar için yönetilen yığının tamamını ve tanıtıcı tablosunu inceler. Ardından her yığında nesnelere yönelik işaretçiler aranır ve sonlandırıcı kuyruğu da aranır.

Bu komut, bir yığın kökünü geçerli veya atılmış olup olmadığını belirlemez. Yığın kökü hala kullanımda olup olmadığını belirlemek üzere 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.
GCWherenesne adresi Geçirilen bağımsız değişkenin çöp toplama yığınındaki konumu ve boyutu görüntüler. Bağımsız değişken yönetilen yığında yer alıyor ancak geçerli bir nesne adresi değilse, boyut 0 (sıfır) olarak görüntülenir.
Yardım (soshelp) [<komut>] [faq] Parametre belirtilmediğinde tüm kullanılabilir komutları görüntüler veya belirtilen komutla ilgili ayrıntılı yardım bilgilerini görüntüler.

faq parametresi, sık sorulan soruların yanıtlarını görüntüler.
HeapStat [-inclUnrooted | -iu] Her yığın için nesil boyutlarını ve her yığındaki her nesildeki 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 Hist komutları ailesi tarafından kullanılan tüm kaynakları serbest bırakır.

Genellikle, her HistInit önceki kaynakları temizlediğinden açıkça HistClearçağırmanız gerekmez.
histInit HATA ayıklamaya kaydedilen stres günlüğünden SOS yapılarını başlatır.
HistObj<obj_address> Tüm stres günlüğü yeniden konumlandırma kayıtlarını inceler ve bağımsız değişken olarak geçirilen adrese yol açmış olabilecek çöp toplama yeniden konumlandırma zincirini görüntüler.
histObjFindobj_address Belirtilen adreste bir nesneye başvuran tüm günlük girdilerini görüntüler.
HistRoot<kök> Belirtilen kökün hem yükseltmeleri hem de yeniden konumlarıyla ilgili bilgileri görüntüler.

Kök değer, bir nesnenin çöp toplamaları aracılığıyla hareketini izlemek için kullanılabilir.
IP2MD (ip2md) <Kod adresi> JIT ile derlenmiş kodda belirtilen adresteki MethodDesc yapısını görüntüler.
ListNearObj (lno) <obj_address> Belirtilen adresin önündeki ve ardından gelen nesneleri görüntüler. Komut, çöp toplama yığınında yönetilen bir nesnenin (geçerli bir yöntem tablosuna göre) geçerli bir başlangıcı gibi görünen adresi ve bağımsız değişken adresini izleyen nesneyi arar. Yalnızca Windows'ta desteklenir.
MinidumpMode [0] [1] Minidump kullanırken güvenli olmayan komutların çalıştırılmasını engeller.

Bu özelliği devre dışı bırakmak için 0 veya bu özelliği etkinleştirmek için 1 geçirin. Varsayılan olarak, minidumpMode değeri 0olarak 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ızı sağlar. Gerekli bellek alanları eşlenmediğinden veya yalnızca kısmen eşlendiğinden bazı komutlar beklenmeyen hatalarla başarısız olabilir. Bu seçenek, mini kuklalara karşı güvenli olmayan komutlar çalıştırmanızı engeller.

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 belirtilen tür veya yöntem için MethodTable 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 * modül adı parametresi olarak geçirerek yüklenen tüm yönetilen modülleri arayabilirsiniz. modül adı parametresi, mscorlib veya image00400000gibi bir modülün hata ayıklayıcı adı da olabilir.

Bu komut, <module>!<type>Windows hata ayıklayıcısı söz dizimini destekler. Türün tam olarak nitelenmiş olması gerekir.
ObjSize [<Nesne adresi>] | [-aggregate] [-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 öğeye ek olarak tüm alt nesnelerin boyutunu içerir.

-aggregate seçeneği, -stat bağımsız değişkeniyle birlikte kullanılarak, hala kök olarak kaydedilen türlerin ayrıntılı bir görünümünü elde edebilirsiniz. !dumpheap -stat ve !objsize -aggregate -statkullanarak, 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] [<Özel durum nesne adresi>]

-veya-

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

iç içe 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 _stackTrace alanını biçimlendirmek ve görüntülemek 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.
RCWCleanupListRCWCleanupList adresi Temizlemeyi bekleyen belirtilen adreste çalışma zamanı çağrılabilen sarmalayıcıları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.

-devre dışı bırak seçeneği simge indirme desteğini açar.

-cache<cache-path> seçeneği bir simge ö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 Sunucu, önbellek ve dizin yollarını Windows sembol yolu biçiminde 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 İç SOS önbelleğini temizler.
SOSStatus [-reset] İç SOS durumunu görüntüler veya önbelleğe alınmış iç durumu sıfırlar.
StopOnException [türetilmiş] [-create | -create2] <Özel Durum><Sahte kayıt numarası> Belirtilen özel durum oluşturulduğunda hata ayıklayıcının durmasına, ancak diğer özel durumlar oluştuğunda çalışmaya devam etmesine neden olur.

türetilmiş seçeneği, belirtilen özel durumu ve belirtilen özel durumdan türetilen her özel durumu yakalar.

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

SyncBlock yapısı, her nesne için oluşturulması gerekmeyen ek bilgilere yönelik bir kapsayıcıdır. İş parçacığı güvenli işlemler için COM birlikte çalışma verilerini, karma kodlarını ve kilitleme bilgilerini barındırabilir.
threadpool Kuyruktaki iş isteği sayısı, tamamlanma bağlantı noktası iş parçacıklarının sayısı ve zamanlayıcı sayısı dahil olmak üzere yönetilen iş parçacığı havuzu hakkındaki 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. Ayrıca, İş 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 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ı arasında atık toplama iş parçacıkları (eşzamanlı ve sunucu çöp toplamada), hata ayıklayıcı yardımcı iş parçacıkları, sonlandırıcı iş parçacıkları, AppDomain iş parçacıklarını kaldırma ve iş parçacığı havuzu zamanlayıcı iş parçacıkları bulunur.

Yerel AOT uygulamaları için desteklenir.
ThreadState <State değer alanı> İş parçacığının durumunu görüntüler. value parametresi, İş Parçacıkları rapor çıkışındaki State alanının değeridir.
Belirteç2EEmodül adıbelirteç Belirtilen modülde belirtilen meta veri belirtecini MethodTable bir yapıya veya MethodDesc bir 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ı parametresi için * geçirebilirsiniz. mscorlib veya image00400000gibi bir modül için hata ayıklayıcının adını da geçirebilirsiniz.
U [-gcinfo] [-ehinfo] [-n] <MethodDesc adres> | <Kod adresi> Yöntemin MethodDesc yapı işaretçisi veya yöntem gövdesindeki bir kod adresi tarafından 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ıda SYMOPT_LOAD_LINES seçeneği belirtilmişse, SOS yönetilen her çerçevenin simgelerini arar ve başarılı olursa ilgili kaynak 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 Atık toplayıcı yığınında bozulma belirtileri olup olmadığını denetler ve bulunan hataları görüntüler.

Yığın bozulmaları, yanlış şekilde yapılan platform çağırma çağrılarından kaynaklanabilir.

Yerel AOT uygulamaları için desteklenir.
VerifyObjnesne adresi Bozulma işaretleri için bağımsız değişken olarak geçirilen nesneyi denetler. Yalnızca Windows'ta desteklenir.
VMMap Sanal adres alanından geçiş yapıp her bölgeye uygulanan koruma türünü görüntüler. Yalnızca Windbg ile desteklenir.
VMStat Bu belleğe uygulanan her koruma türüne göre sıralanmış (ücretsiz, ayrılmış, kaydedilmiş, özel, eşlenmiş, görüntü) sanal adres alanının özet görünümünü sağlar. TOPLAM sütunu, ORTALAMA sütununun sonucunu BLK COUNT sütunuyla çarparak görüntüler. Yalnızca Windbg ile desteklenir.

Windows Hata Ayıklayıcısı

.NET hata ayıklayıcısı uzantılarını, WinDbg/dbg hata ayıklayıcı yükleyip Windows hata ayıklayıcısı içinde komutları yürüterek de kullanabilirsiniz. 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 uzantıyı otomatik olarak yüklemelidir.

LLDB Hata Ayıklayıcısı

LLDB için .NET hata ayıklayıcısı uzantılarını yapılandırma yönergeleri için bkz. dotnet-debugger-extensions. Komutlar canlı işlemlerde veya dökümlerde kullanılabilir.

Varsayılan olarak şunu girerek tüm komutlara ulaşabilirsiniz: sos [command_name]. Ancak, sos önekine ihtiyacınız olmayacak şekilde yaygın komutlar diğer adla verilmiştir:

Komut Fonksiyon
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 yönetilen kodun 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ısı 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.
dumplock System.Threading.Lock nesneleri hakkında, iş parçacıkları tarafından tutulanlar (varsayılan) veya iş parçacıkları tarafından bekletilmekte olanlar gibi bilgileri görüntüler. Bu komut yalnızca .NET hata ayıklayıcısı uzantılarında kullanılabilir.
dumplog Bellek içi stres günlüğünün içeriğini belirtilen dosyaya yazar.
dumpmd Belirtilen adreste MethodDesc yapısı 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 <sigaddr> <moduleaddr>tarafından belirtilen yöntem 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 dumpstack çalıştırır.
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 kaydedilen 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ı tutamaç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 HATA ayıklamaya kaydedilen stres günlüğünden SOS yapılarını başlatır.
histobj Tüm stres günlüğü yeniden konumlandırma kayıtlarını inceler ve bağımsız değişken olarak geçirilen adrese yol açmış olabilecek çöp toplama yeniden konumlandırma 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 hem yükseltmeleri hem de yeniden konumlarıyla ilgili bilgileri görüntüler.
histstats Stres günlüğü istatistiklerini görüntüler.
ip2md JIT ile derlenmiş kodda belirtilen adresteki MethodDesc yapısını 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 belirtilen tür veya yöntem için MethodTable 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 <root> ile <target>gc yolunu görüntüler.
pe Belirtilen adreste Exception sınıfından türetilen herhangi bir nesnenin alanlarını görüntüler ve biçimlendirebilir.
printexception Belirtilen adreste Exception sınıfından türetilen herhangi bir nesnenin 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ığı dizini kullanmak yerine ayarlar. setsostid <tid> <index>.
sos Çeşitli coreclr hata ayıklama komutlarını yürütür. sos <command-name> <args>söz dizimini 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 Bozulma işaretleri için bağımsız değişken olarak geçirilen nesneyi denetler.

Windbg/cdb örnek kullanımı

Komut Açıklama
!dumparray -start 2 -length 5 -details 00ad28d0 00ad28d0adresinde bir dizinin içeriğini görüntüler. Görüntü ikinci öğeden başlar ve beş öğe için devam eder.
!dumpassembly 1ca248 1ca248adresinde bir 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 902f40adresinde MethodDesc yapısını görüntüler.
!dumpmodule 1caa50 1caa50adresinde bir modül hakkındaki bilgileri görüntüler.
!DumpObj a79d40 a79d40adresinde bir nesne hakkındaki bilgileri görüntüler.
!DumpVC 0090320c 00a79d9c 0090320cadresindeki yöntem tablosunu kullanarak 00a79d9c adreste 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 00a79d98adresinde bir 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 unittest.exemodülündeki sınıf MainClassMain yöntemi için MethodTable ve EEClass yapılarını görüntüler.
!token2ee unittest.exe 02000003 unittest.exemodülündeki 02000003 adresinde meta veri belirteci hakkındaki bilgileri görüntüler.

LLDB örnek kullanımı

Komut Açıklama
dumparray -start 2 -length 5 -details 00ad28d0 00ad28d0adresinde bir dizinin içeriğini görüntüler. Görüntü ikinci öğeden başlar ve beş öğe için devam eder.
dumpassembly 1ca248 1ca248adresinde bir 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 902f40adresinde MethodDesc yapısını görüntüler.
dumpmodule 1caa50 1caa50adresinde bir modül hakkındaki bilgileri görüntüler.
dumpobj a79d40 a79d40adresinde bir nesne hakkındaki bilgileri görüntüler.
dumpvc 0090320c 00a79d9c 0090320cadresindeki yöntem tablosunu kullanarak 00a79d9c adreste 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 00a79d98adresinde bir 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 unittest.exemodülündeki sınıf MainClassMain yöntemi için MethodTable ve EEClass yapılarını görüntüler.
token2ee unittest.exe 02000003 unittest.exemodülündeki 02000003 adresinde 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.