SOS.dll (SOS hata ayıklama uzantısı)

Önemli

Bu makale, SOS hata ayıklama uzantısının .NET Framework sürümüyle ilgilidir. Aracın daha yeni .NET (Core) sürümü hakkında bilgi için bkz . SOS hata ayıklama uzantısı.

SOS hata ayıklama uzantısı (SOS.dll), iç Ortak Dil Çalışma Zamanı (CLR) ortamı hakkında bilgi sağlayarak Visual Studio'da ve Windows hata ayıklayıcısında (WinDbg.exe) yönetilen programlarda hata ayıklamanıza yardımcı olur. Bu araç, projenizde yönetilmeyen hata ayıklamanın etkin olmasını gerektirir. SOS.dll .NET Framework ile otomatik olarak yüklenir. Visual Studio'da SOS.dll kullanmak için Windows Sürücü Seti'ni (WDK) yükleyin.

Sözdizimi

![command] [options]

Komutlar

Komut Açıklama
AnalyzeOOM (ao) Çöp toplama yığınına bir ayırma isteğinde oluşan son bellek yetersizlik (OOM) bilgilerini görüntüler. (Sunucu çöpü toplamada, her bir çöp toplama yığınında varsa OOM görüntüler.)
BPMD [-nofuturemodule] [<modül adı><yöntem adı>] [-md<MethodDesc>] -list-clear< bekleyen 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] 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(tümü) seçeneği , -l ve -p birleştirilmiş bir 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ı 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.

SOS Hata Ayıklama Uzantısı, x64 ve IA-64 tabanlı platformlarda geçiş çerçevelerini görüntülemez.
COMState Her iş parçacığı için COM daire modelini ve varsa bir Context işaretçiyi listeler.
DumpArray [-start<startIndex>] [-length<length>] [-details] [-nofields] <dizi nesnesi adresi>

-veya-

DA [-start<startIndex>] [-length length><] [-detail] [-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 -detail seçeneği belirtildiğinde kullanılabilir.
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.
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 (onaltılık) cinsinden belirtilen parametreden size küçük nesneleri yoksayar.

-max seçeneği, bayt (onaltılık) 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'nin bir derlemeden yüklenen CIL'den farklı bir şekilde yayıldığını unutmayın. 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.
DumpMethodSig<sigaddr><moduleaddr> Belirtilen adreste bir MethodSig yapı hakkındaki bilgileri görüntüler.
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ırabileceğinizi unutmayın.

-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] [topstack [bottomstack]] 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.

x86 ve x64 platformlarında DumpStack komutu ayrıntılı bir yığın izlemesi oluşturur.

IA-64 tabanlı platformlarda DumpStack komutu hata ayıklayıcının K komutunu taklit eder. top ve bottom parametreleri IA-64 tabanlı platformlarda yoksayılır.
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] [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, bir nesne alanının statik CLASS olmayan alanlarını doğrular.

Yerel değişkenlerin ve parametrelerin değerlerini belirlemek için K komutu ve CLRStack komutu 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] İç CLR 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ı.
EEVersion CLR sürümünü görüntüler.
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.
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.
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.
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.
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] <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. Yerel veya bağımsız değişken değerinin ait olduğu çerçeveyi ayrıştırmak için CLRStack ve U komutlarını kullanarak yığın kökü hala kullanımda olup olmadığını belirleyin.

-nostacks seçeneği, aramayı çöp toplayıcı tutamaçları ve erişilebilir nesnelerle kısıtlar.
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.
help [<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.
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<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.
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.
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.
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.
RCWCleanupList<RCWCleanupList adresi> Belirtilen adreste temizlenmeyi bekleyen çalışma zamanı çağrılabilir sarmalayıcılarının listesini görüntüler.
SaveModule<Temel adresi><Dosya Adı> Belirtilen adreste belleğe yüklenen bir görüntüyü belirtilen dosyaya yazar.
SOSFlush Bir iç SOS önbelleğini temizler.
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.
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.
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 mscorlibimage00400000bir modül için hata ayıklayıcının adını da geçirebilirsiniz.
İş parçacıkları [-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.

Örnek:

0:003> !Threads ThreadCount: 2 UnstartedThread: 0 BackgroundThread: 1 PendingThread: 0 DeadThread: 0 Hosted Runtime: no PreEmptive GC Alloc Lock ID OSID ThreadOBJ State GC Context Domain Count APT Exception 0 1 250 0019b068 a020 Disabled 02349668:02349fe8 0015def0 0 MTA 2 2 944 001a6020 b220 Enabled 00000000:00000000 0015def0 0 MTA (Finalizer) 0:003> !ThreadState b220 Legal to Join Background CLR Owns CoInitialized In Multi Threaded Apartment
TraverseHeap [-xml] <dosya adı> Yığın bilgilerini, CLR profil oluşturucusunun anlayacağı bir biçimde belirtilen dosyaya yazar. -xml seçeneği TraverseHeap komutunun dosyayı XML olarak biçimlendirmesine neden olur.
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.
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.
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.

Açıklamalar

SOS Hata Ayıklama Uzantısı, CLR içinde çalışan kod hakkındaki bilgileri görüntülemenizi sağlar. Örneğin, yönetilen yığınla ilgili bilgileri görüntülemek, yığın bozulmalarını aramak, çalışma zamanı tarafından kullanılan iç veri türlerini görüntülemek ve çalışma zamanı içinde çalışan tüm yönetilen kodla ilgili bilgileri görüntülemek için SOS Hata Ayıklama Uzantısı'nı kullanabilirsiniz.

Visual Studio'da SOS Hata Ayıklama Uzantısı'nı kullanmak için Windows Sürücü Seti'ni (WDK) yükleyin. Visual Studio'daki tümleşik hata ayıklama ortamı hakkında bilgi için bkz . Hata Ayıklama Ortamları.

SOS Hata Ayıklama Uzantısını WinDbg.exe hata ayıklayıcısına yükleyip WinDbg.exe içindeki komutları yürüterek de kullanabilirsiniz.

SOS Hata Ayıklama Uzantısı'nı WinDbg.exe hata ayıklayıcısına yüklemek için, aşağıdaki komutu araçta çalıştırın:

.loadby sos clr

WinDbg.exe ve Visual Studio, kullanımda olan Mscorwks.dll'ye karşılık gelen SOS.dll'nin bir sürümünü kullanır. Varsayılan olarak, Mscorwks.dll'nin geçerli sürümüyle eşleşen SOS.dll sürümünü kullanmanız gerekir.

Başka bir bilgisayarda oluşturulan bir döküm dosyasını kullanmak için, yüklemeyle birlikte gelen Mscorwks.dll dosyasının simge yolunuzda olduğundan emin olun ve ilgili SOS.dll sürümünü yükleyin.

SOS.dll'nin özel bir sürümünü yüklemek için, aşağıdaki komutu Windows Hata Ayıklayıcı'ya yazın:

.load <full path to sos.dll>

Örnekler

Aşağıdaki komut, adresinde 00ad28d0bir dizinin içeriğini görüntüler. Görüntü ikinci öğeden başlar ve beş öğe boyunca devam eder.

!dumparray -start 2 -length 5 -detail 00ad28d0

Aşağıdaki komut adresinde 1ca248bir derlemenin içeriğini görüntüler.

!dumpassembly 1ca248

Aşağıdaki komut, çöp toplayıcı yığınıyla ilgili bilgileri görüntüler.

!dumpheap

Aşağıdaki komut, bellek içi yük günlüğünün içeriğini, geçerli dizindeki StressLog.txt adlı bir dosyaya (varsayılan) yazar.

!DumpLog

Aşağıdaki komut, adresinde 902f40yapısını görüntülerMethodDesc.

!dumpmd 902f40

Aşağıdaki komut adresinde 1caa50bir modülle ilgili bilgileri görüntüler.

!dumpmodule 1caa50

Aşağıdaki komut adresinde a79d40bir nesneyle ilgili bilgileri görüntüler.

!DumpObj a79d40

Aşağıdaki komut, adresindeki yöntem tablosunu 0090320ckullanarak adreste 00a79d9c bir değer sınıfının alanlarını görüntüler.

!DumpVC 0090320c 00a79d9c

Aşağıdaki komut, çöp toplayıcı tarafından kullanılan işlem belleğini görüntüler.

!eeheap -gc

Aşağıdaki komut, sonlandırma için zamanlanan tüm nesneleri görüntüler.

!finalizequeue

Aşağıdaki komut, adresinde 00a79d98bir nesnenin uygulama etki alanını belirler.

!findappdomain 00a79d98

Aşağıdaki komut, geçerli işlemdeki tüm çöp toplayıcı tanıtıcılarını görüntüler.

!gcinfo 5b68dbb8

Aşağıdaki komut, modülündeki unittest.exesınıfında MainClass yönteminin ve EEClass yapılarını Main görüntülerMethodTable.

!name2ee unittest.exe MainClass.Main

Aşağıdaki komut, modülündeki unittest.exeadreste 02000003 meta veri belirteci hakkındaki bilgileri görüntüler.

!token2ee unittest.exe 02000003

Ayrıca bkz.