(SOS ملحق تصحيح الأخطاء) SOS.dll

يساعدك SOS ملحق تصحيح الأخطاء (SOS.dll) في تصحيح برامج مدارة في مصحح الأخطاء WinDbg.exe و في Visual Studio بواسطة توفير معلومات حول البيئة الداخلية لوقت تشغيل اللغة العامة (CLR), و للحصول على SOS.dll قم بتثبيت أدوات تصحيح الأخطاء لحزمة نوافذ من الـ WDK و من موقع ويب أدوات المطور .

يتم تلقائياً تثبيت ملحق تصحيح الأخطاء SOS مع ‏‫Visual Studio, و لتشغيل الأداة استخدم موجه أوامر Visual Studio.. في موجه الأوامر، اكتب ما يلي:

![command] [options] 

الأوامر

Command

الوصف

AnalyzeOOM (ao)

يعرض المعلومات من أجل OOM الأخيرة التي تمت تشغيل طلب تخصيص إلى كومة الذاكرة المؤقتة الخاصة بتجميع البيانات المهملة. (في تجميع البيانات المهملة الملقم، يعرض OOM، أن وجدت، تشغيل كل كومة ذاكرة مؤقتة لمجموعة البيانات المهملة.)

BPMD [-nofuturemodule] [<module name> <method name>] [-md <MethodDesc>] -list -clear <pending breakpoint number> -clearall

إنشاء نقطة توقف للأسلوب المحدد في الوحدة النمطية المحددة.

إذا كانت وحدة نمطية? المحددة و أسلوب قد لا يتم تم تحميله، comm هذا و ينتظر إعلام تم تحميله وحدة نمطية? و في نفس الوقت (JIT) ترجمة قبل إنشاء نقطة توقف.

يمكنك إدارة القائمة معلّقة نقاط التوقف باستخدام -list، -clear، و -clearallالخيارات:

  • -listخيار بإنشاء قائمة بكافة معلّقة نقاط التوقف. إذا كان لدى نقطة توقف معلّقة المعرف الوحدة نمطية غير صفري، نقطة الإيقاف تلك تقتصر إلى دالة في تلك وحدة نمطية? المحملة معينة. إذا كان لدى نقطة الإيقاف معلق المعرف الوحدة نمطية صفر، يتم تطبيق نقطة الإيقاف تلك إلى الوحدات النمطية التي لا تم بعد تحميلها.

  • استخدم -clearأو -clearallخيار إزالة المعلقة نقاط التوقف من قائمة.

CLRStack [-a] [-l] [-p] [-n]

يوفر تتبع مكدس من تعليمات برمجية مدارة فقط.

  • الخيار -p يظهر الوسائط للدالة المدارة.

  • الخيار -l يظهر معلومات على متغييرات محلية في إطار, حيث لا يتمكن ملحق تصحيح الأخطاء SOS من استرداد أسماء محلية, لذلك فإن الإخراج لأسماء محلية موجود في التنسيق <العنوان المحلي> = <القيمة>.

  • الخيار (كل) -a عبارة عن اختصار لـ -l و -p متجمعة.

  • -nتعطيل خيار لعرض أسماء الملفات المصدر وأرقام الأسطر. إذا كان المصحح للخيار المحدد SYMOPT_LOAD_LINES، SOS سوف يبحث رموزاً لكل إطار المدارة و إذا نجح يعرض اسم الملف المصدر المقابلة و رقم السطر. يمكن تعيين معلمة -n(لا أرقام الأسطر) إلى تعطيل هذا سلوك.

ملحق تصحيح SOS لا يتم عرض إطارات انتقال ‏‫x64 و IA-تستند إلى ‏‫x64 الأنظمة الأساسية.

COMState

يسرد طراز الحيز COM لكل مؤشر ترابط و مؤشر Context إذا كان متوفر.

DumpArray [-start <startIndex>] [-length <طول>] [-details] [-nofields] <عنوان كائن صفيف>

-أو-

DA [-start <startIndex>] [-length <طول>] [-detail] [-nofields] عنوان كائن صفيف>

يفحص عناصر كائن صفيف.

  • الخيار -start يحدد فهرس البداية عنده لعرض عناصر.

  • الخيار -length يحدد عدد العناصر التي يتم إظهارها.

  • الخيار -details يعرض تفاصيل العنصر باستخدام التنسيقات DumpObj و DumpVC.

  • الخيار -nofields يمنع عرض صفائف, و يتوفر هذا الخيار فقط عندما يتم تحديد الخيار -detail.

DumpAssembly<العنوان تجميع>

يعرض معلومات حول تجميع.

الأمر DumpAssembly يسرد الوحدات النمطية المتعددة إذا كانت موجودة.

يمكنك يحصل العنوان تجميع بواسطة استخدام DumpDomainالأمر.

DumpClass <عنوان EEClass>

يعرض معلومات حول البنية EEClass المقترنة بنوع.

الأمر DumpClass يعرض قيم حقل ثابتة و لكن لا يقوم بعرض قيم حقل غير ثايتة

استخدم theDumpMT,DumpObj,Name2EE, أوToken2EEالأمر إلى يحصل anEEClassبنية العنوان.

DumpDomain< مجال العنوان >]

تعداد كل Assemblyكائن هو تم تحميلهه ضمن المحدد AppDomainكائن العنوان. و عندما يتم الاستدعاء من غير معلمات، فإن الأمر DumpDomain يسرد كافة الكائنات AppDomain في عملية.

DumpHeap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] [-startAtLowerBound] [-mt <MethodTable address>] [-type <partial type name>][start [end]]

يعرض معلومات حول كومة الذاكرة المؤقتة المجمعة في البيانات المهملة و مجموعة إحصائيات حول الكائنات.

إذا كشف تجزئة زائدة في كومة الذاكرة المؤقتة لمجمع البيانات المهملة, فإن الأمر DumpHeap يقوم بعرض تحذير.

  • الخيار -stat يقييد الإخراج لنوع الإحصائية الموجزة.

  • -stringsتقييد خيار إخراج إلى القيمة السلسلة الإحصائية خلاصة.

  • -shortيحد خيار إخراج إلى العنوان فقط لكل كائن. يتيح هذا إمكانية توجيه الإخراج من الأمر إلى آخر أمر مصحح الأخطاء للتنفيذ التلقائي بسهولة.

  • الخيار -min يتجاهل الكائنات التي أقل من المعلمة size المحددة بوحدات البايت.

  • الخيار -max يتجاهل الكائنات التي أكبر من المعلمة size المحددة بوحدات البايت.

  • -thinlockتقارير خيار ThinLocks. لمزيد من المعلومات، راجع الأمر SyncBlk

  • -startAtLowerBoundيفرض خيار walk كومة ذاكرة مؤقتة في إلى البدء في الحد الأدنى من نطاق العنوان المعطى. أثناء مرحلة التخطيط كومة ذاكرة مؤقتة هو غالباً لا walkable لأن نقل الكائنات. يفرض هذا خيار على DumpHeapإلى تبدأ walk به عند الحد الأدنى المحدد. يجب توفير العنوان كائن صالح كالحد الأدنى لهذا خيار إلى العمل. يمكنك عرض ذاكرة عند العنوان لكائن غير صالح إلى يدوياً العثور على أسلوب الجدول التالي. إذا كانت مجموعة البيانات المهملة هو حاليا في استدعاء memcopy، قد تكون قادراً على العثور على العنوان الكائن التالي بإضافة الحجم لالعنوان البدء، الذي هو الذي تم توفيره كمعلمة.

  • -mtخيار بسرد الكائنات التي تتوافق مع إلى الفرعي MethodTableبنية.

  • الخيار -type يسرد فقط تلك الكائنات التي اسم النوع الخاص بها عبارة عن سلسلة فرعية مطابقة للسلسلة المحددة.

  • المعلمة start تبدأ بالسرد من العنوان المحدد.

  • المعلمة end توقف السرد عند العنوان المحدد.

DumpIL<كائن مدارة DynamicMethod> | < مؤشر DynamicMethodDesc> | < مؤشر MethodDesc >

Dهوplays اللغة Microsoft Office 2010 Suite المتوسطة (MSIL) التي هو مقترن بإحدى الطرق التي تمت إدارتها.

ملاحظة هذا MSIL ديناميكي هو تصدر بشكل مختلف عن MSIL التي هو تحميلها من تجميع. MSIL الديناميكية تشير إلى الكائنات في صفيفة كائن مدار بدلاً من الرموز المميزة لبيانات التعريف.

DumpLog -addr< addressOfStressLog >] [< من Filename >]

يكتب محتويات سجل ضغط ما في الذاكرة إلى الملف المحدد, إذا لم تحدد اسماً، يقوم هذا الأمر بإنشاء ملف يسمى StressLog.txt في الدليل الحالي.

يساعدك يسجل الضغط في ذاكرة في تشخيص فشل الضغط بدون استخدام التأمين أو الادخال/الاخراج. لتمكين سجل الضغط, قم بتعيين مفاتيح التسجيل التالية ضمن HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework:

DWORD) StressLog = 1)

DWORD) LogFacility = 0xffffffff)

DWORD) StressLogSize = 65536)

اختياري -addrخيار يتيح لك تحديد يسجل الضغط غير يسجل. شكل افتراضي

DumpMD <عنوان MethodDesc>

يعرض معلومات حول بنية MethodDesc على العنوان المحدد.

يمكنك استخدام الأمر IP2MD للحصول على عنوان البنية MethodDesc من دالة مدارة.

DumpMT [-MD] <عنوان MethodTable>

يعرض معلومات حول جدول أسلوب على العنوان المحدد, فتحديد الخيار -MD يعرض قائمة لكافة أساليب معرّفة مع الكائن.

يحتوي كل كائن مُدار على مؤشر جدول أسلوب.

DumpMethodSig <sigaddr> <moduleaddr>

يعرض معلومات حول بنية MethodSig على العنوان المحدد.

DumpModule [-mt] <عنوان وحدة نمطية>

يعرض معلومات حول وحدة نمطية على العنوان المحدد, فالخيار -mt يعرض كافة الأنواع المعرّفة في وحدة نمطية و كافة الأنواع المشار إليها من قبل الوحدة النمطية.

يمكنك استخدام DumpDomainأو DumpAssemblyالأمر إلى لاسترداد الالعنوان وحدة نمطية.

DumpObj [-nofields] <object address>

-أو-

DO<عنوان كائن>

يعرض معلومات حول كائن ما على العنوان المحدد, فالأمر DumpObj يعرض الحقول و معلومات البنية EEClass و جدول الأسلوب و الحجم للكائن.

يمكنك استخدام الأمر DumpStackObjects لاسترداد عنوان كائن.

لاحظ أنه يمكنك تشغيل الأمر DumpObj على حقول من نوع CLASS لأنها أيضاً كائنات.

-nofieldsيمنع خيار حقول لعرض الكائن، ومفيد للكائنات كسلسلة أحرف.

DumpRuntimeTypes

يعرض كائنات النوع لوقت التشغيل في كومة الذاكرة المؤقتة لحاوي المهملات و يسرد أسماء النوع المقترنة و جداول الأسلوب الخاصة به.

DumpStack [-EE] [-n] [top stack [bottom stack]]

يعرض تتبع مكدس.

  • الخيار -EE يؤدي إلى الأمر DumpStack ليعرض دالات مدارة فقط, استخدم topو bottomالمعلمات إلى تقييد الإطارات بنية تخزين العناصر المعروضة تشغيل x86 الأنظمة الأساسية.

  • -nتعطيل خيار لعرض أسماء الملفات المصدر وأرقام الأسطر. إذا كان المصحح للخيار المحدد SYMOPT_LOAD_LINES، SOS سوف يبحث رموزاً لكل إطار المدارة و إذا نجح يعرض اسم الملف المصدر المقابلة و رقم السطر. يمكن تعيين معلمة -n(لا أرقام الأسطر) إلى تعطيل هذا سلوك.

تشغيل الأنظمة الأساسية x86 و ‏‫x64، DumpStackالأمر إنشاء تتبع مكدس مطول.

في الأنظمة IA-تستند إلى x64 الأساسية DumpStackيحاكي الأمر المصحح من Kالأمر. top bottomيتم تجاهل معلمات تشغيل الأنظمة الأساسية IA-تستند إلى x64.

DumpSig<sigaddr>< moduleaddr >

يعرض معلومات حول بنية Sig على العنوان المحدد.

DumpSigElem <sigaddr>< moduleaddr >

عرض عنصر مفرد من كائن توقيع. في معظم الحالات، يجب عليك استخدام DumpSigإلى انظر الكائنات فردية التوقيع. ومع ذلك، في حالة تلف أحد التواقيع في طريقة، يمكنك استخدام DumpSigElemقراءة أجزاء صحيحة من it.

DumpStackObjects [-verify] [top stack [bottom stack]]

-أو-

DSO [-verify] [top stack [bottom stack]]

يعرض كافة الكائنات المدارة التي تم العثور عليها في حدود المكدس الحالي.

الخيار -verify يتحقق من صحة كل حقل غير ثابت CLASS لحقل كائن ما.

استخدام الأمر DumpStackObject مع أوامر تتبع مكدس مثل الأمر K و الأمر CLRStack لتحديد القيم للمتغيرات المحلية و المعلمات.

DumpVC <عنوان MethodTable> <عنوان>

يعرض معلومات حول الحقول لفئة القيمة على العنوان المحدد.

المعلمة MethodTable تسمح للأمر DumpVC لتفسير الحقول بشكل صحيح, ففئات القيم لا تملك جدول أسلوب كما على الحقل الأول .

EEHeap [-gc] [-loader]

يعرض معلومات حول ذاكرة العملية المستهلكة من قبل هياكل بيانات داخلية لوقت تشغيل اللغة العامة.

تقوم الخيارات -gc و -loader بتحديد الإخراج لهذا الأمر إلى حاوي المهملات أو بنيات بيانات محمّلة.

إن معلومات حاوي المهملات تقوم بسرد النطاقات لكل قطعة في كومة الذاكرة المؤقتة المدارة, و إذا كان المؤشر يقع ضمن نطاق قطعة قدمت بواسطة -gc،فإن المؤشر عبارة عن مؤشر لكائن.

EEStack [-short] [-EE]

تشغيل الأمر DumpStack على كافة مؤشرات الترابط في العملية.

الخيار -EE يتم تمريره مباشرة إلى الأمر DumpStack, و المعلمة -short تحدد الإخراج للأنواع التالية من مؤشرات الترابط:

  • مؤشرات الترابط التي أخذت قفل.

  • مؤشرات الترابط التي تم تثبيتها من أجل السماح بحاوي مهملات.

  • مؤشرات الترابط الموجودة حالياً في التعليمات البرمجية المدارة.

EEVersion

يعرض إصدار وقت تشغيل اللغة العامة.

EHInfo [<عنوان MethodDesc>] [<عنوان تعليمات برمجية>]

يعرض محظورات التعامل للاستثناء في أسلوب محدد, هذا comm و عرض عناوين الرموز و إزاحة لحظر عبارة ( tryحظر) و حظر hوler ( catchحظر).

FAQ

عرض الأسئلة المتداولة.

FinalizeQueue [-detail] | [-allReady] [-short]

يعرض كافة الكائنات التي تم تسجيلها للإنهاء.

  • -detailيعرض خيار معلومات إضافية حول أي SyncBlocksالتي تحتاج إلى تنظيف لأعلى، وأي RuntimeCallableWrappersمازالت (RCWs) التي هناك تنظيف لأعلى. كل من هذه بيانات المخزنة مؤقتاً بنيات وتنظيف لأعلى قبل مؤشر ترابط أداة الإنهاء عند تشغيله.

  • -allReadyخيار عرض الجميع الكائنات جاهزة للإنهاء، بغض النظر عن ما إذا كانت لها مسبقاً عن طريق تجميع البيانات المهملة كاو سيتم وضع علامة بواسطة التالي البيانات المهملة مجموعة. الكائنات التي يتم لا t في قائمة "جاهز الانهاء" هي كائنات finalizable التي لا rooted بعد الآن. يمكن أن يكون هذا خيار مكلفاً جداً، لأن التحقق من ما إذا كانت الجميع الكائنات في قوائم الانتظار finalizable تم وضعها باستمرار.

  • -shortيحد خيار إخراج إلى العنوان لكل كائن. إذا كان يتم استخدامه بالتزامن مع -allReady، تعداد الجميع الكائنات التي تحتوي على أداة الإنهاء لم يعد يتم وضعها. في حالة استخدام طريقة مستقلة، وهو يسرد الجميع الكائنات في finalizable و "جاهز الانهاء" قوائم الانتظار.

FindAppDomain <عنوان كائن>

تحديد مجال التطبيق لكائن على العنوان المحدد.

FindRoots -gen <N> | -gen any |<كائن العنوان>

يؤدي المصحح إلى فصل في debuggee تشغيل المجموعة التالية من إنشاء المحدد. التأثير هو يعيد تعيين المعاملة كما يحدث فواصل. إلى فاصل في المجموعة التالية، يكون لديك إلى إعادة إصدار الأمر. النموذج < العنوان الكائن > من القيم بالموضع هو الأمر هو استخدامه بعد الفاصل يعود -genأو -gen anyحدث. في هذا الوقت، debuggee هو في الحالة الصحيحة ل FindRootsللتعرف على الجذور للكائنات من الحالي condemned generations.

GCHandles [-perdomain]

يعرض إحصائيات حول مؤشرات حاوي المهملات في العملية.

-perdomainخيار ترتيب الإحصائيات بواسطة مجال تطبيق.

استخدام الأمر GCHandles للعثور على تسرب للذاكرة حدث بسبب تسرب لمعالج حاوي المهملات. فعلى سبيل المثال، يحدث تسرب للذاكرة عندما يحتفظ بصفيف كبير لأن مؤشر قوي لحاوي مهملات ما يزال يشير إليه و يتم تجاهل المؤشر دون الإفراج عنه.

GCHandleLeaks

يبحث عن ذاكرة من أجل أية مراجع لمؤشرات حاوي المهملات القوية و المقيدة في العملية و يعرض النتائج, و في حالة تم العثور على مؤشر فإن الأمر GCHandleLeaks يعرض العنوان للمرجع, و إذا لم يتم العثور على مؤشر في ذاكرة فإن هذا الأمر يعرض إعلام ما.

GCInfo<العنوان MethodDesc><تعليمات برمجية العنوان>

يعرض البيانات التي تشير إلى متى التسجيلات أو مواقع المكدس تحتوي على الكائنات المدارة, و في حالة حدوث تجميع البيانات المهملة, فإنه يجب على المجمّع معرفة المواقع لمراجع الكائنات بحيث يمكن تحديثها مع قيم مؤشر كائن جديدة.

GCRoot [-nostacks] <عنوان كائن>

يعرض معلومات حول المراجع (أو الجذور) لكائن عند العنوان المحدد.

يقوم الأمر GCRoot بفحص كومة الذاكرة المؤقتة المدارة بأكملها و جدول المؤشر للمؤشرات داخل كائنات أخرى و المؤشرات على المكدس, كل كدسة هو ثم البحث عن مؤشرات للالكائنات، وقائمة الانتظار أداة الإنهاء هو أيضا بالبحث.

لا يقوم هذا الأمر بتحديد ما إذا كان جذر مكدس صالح أم يتم تجاهله, فاستخدم الأوامر CLRStack و U لتفكيك الإطار الذي تنتمي إليه القيمة الوسيطة أو المحلية من أجل تحديد ما إذا كان جذر المكدس لا يزال قيد الاستخدام.

الخيار -nostacks يقوم بتقييد البحث لمؤشرات حاوي المهملات و كائنات freachable.

GCWhere < كائن العنوان >

قم بعرض الموقع والحجم في تجميع البيانات المهملة كومة ذاكرة مؤقتة للوسيطة التي تم تمريرها. عندما يقع وسيطة في الكومة المدار ولكن هو العنوان كائن صالح لا، والحجم هو dهوplayed ك 0 (صفر).

help<الأمر>]faq]

Dهوplays متوفر على الجميع الأوامر عندما لا توجد معلمات هو المحددة، أو dهوplays تعليمات معلومات مُفصل حول الأمر المعين.

المعلمة faq تعرض إجابات للأسئلة المتداولة.

HeapStat [-inclUnrooted | -iu]

عرض أحجام الجيل لكومة ذاكرة مؤقتة لكل و إجمالي المساحة الحرة في كل الجيل تشغيل كل كومة ذاكرة مؤقتة. إذا- inclUnrootedيتم تحديد خيار، يتضمن التقرير معلومات حول الالكائنات المدارة من تجميع البيانات المهملة كومة ذاكرة مؤقتة التي لم يعد يتم تحديد جذر.

HistClear

قم بتحرير أي من موارد المستخدمة بواسطة لمجموعة من Histالأوامر.

بشكل عام، لم يكن إلى صراحة باستدعاء HistClear، لأن كل HistInitتنظيف موارد السابقة.

HistInit

تهيئة بنيات SOS من حفظها في debuggee يسجل الضغط.

HistObj <obj_address>

قم بفحص الجميع السجلات لإعادة تحديد موقع يسجل من الضغط ويعرض سلسلة relocations تجميع البيانات المهملة والتي قد تم الافتتاح إلى تمريره العنوان كوسيطة.

HisttObjFind <obj_address>

قم بعرض الجميع إدخالات السجل التي تشير إلى كائن عند العنوان المعين.

HistRoot <جذر>

يعرض معلومات تتعلق إلى relocations الجذر المحدد والعروض الترويجية.

يمكن استخدام القيمة جذر إلى تعقب حركة كائن المجموعات البيانات المهملة.

IP2MD <عنوان تعليمات برمجية>

يعرض MethodDescبنية عند العنوان المعين في تعليمات برمجية الذي تم تحويله برمجياً JIT.

ListNearObj(lno)<obj_address>

عرض الكائنات بالسابقة و بعد العنوان المعين. comm و يبحث عن العنوان الموجود في كومة ذاكرة مؤقتة لمجموعة البيانات المهملة يشبه بداية كائن مدار (يستند إلى جدول أسلوب صالح) صالح و الكائن بعد العنوان الوسيطة.

MinidumpMode [0] [1]

عند استخدام تفريغ مصغّر فإنه يتم منع تشغيل الأوامر الغير آمنة.

تمرير0 ليعطل هذه الميزة أو 1 لتمكين هذه الميزة. بشكل افتراضي، فإن القيمة MinidumpMode يتم تعيينها إلى 0.

التفريغات المصغّرة التي تم إنشاؤها باستخدام الأمر .dump /m أو الأمر .dump الذي يحتوي على البيانات المحددة الخاصة بـ CLR و يسمح لك بتشغيل مجموعة فرعية فقط من الأوامر SOS بشكل صحيح, و قد تفشل بعض الأوامر مع أخطاء غير متوقعة بسبب عدم تعيين المناطق المحددة من الذاكرة أو أنه تم تعيينها جزئياً فقط, فهذا الخيار يحميك من تشغيل أوامر غير آمنة ضد تفريغات مصغّرة.

Name2EE <اسم وحدة نمطية> <نوع أو ‏‏اسم الأسلوب>

-أو-

Name2EE <اسم وحدة نمطية>!<نوع أو اسم الأسلوب>

يعرض البنية MethodTable و البنية EEClass للنوع أو الأسلوب المحدد في الوحدة النمطية المحددة.

يجب أن يتم تحميل الوحدة النمطية المحددة في عملية.

إلى الحصول على اسم النوع المناسب، واستعرض وصولاً وحدة نمطية باستخدام Ildasm.exe (المفكك MSIL). يمكنك أيضاً تمرير * كمعلمة اسم الوحدة النمطية للبحث عن كافة الوحدات النمطية المدارة التي تم تحميلها. المعلمة اسم وحدة نمطية يمكن أيضاً أن تكون اسماً لمصحح الأخطاء لوحدة نمطية مثل mscorlib أو image00400000.

إن هذا الأمر يقوم بدعم بناء جملة مصحح النوافذ لـ <module>!<type>, و يجب أن يكون النوع مؤهلاً بشكل كامل.

ObjSize<كائن العنوان>] |-aggregate] [-stat]

يعرض الحجم للكائن المحدد, في حالة عدم تحديد أية معلمات، ObjSizeيعرض الأمر الحجم الجميع الكائنات الموجودة تشغيل عمليات جزئية التي تمت إدارتها، يعرض الجميع التعاملات collecإلىr البيانات المهملة في العملية، ويشير الحجم أية كائنات إلى tals إلى بهذه المعالجات. و يتضمن الأمر ObjSize حجم كافة الكائنات التابعة بالإضافة إلى الأصل.

-aggregateيمكن استخدام خيار بالاقتران مع -statوسيطة للحصول على عرض مفصل للأنواع التي تم وضعها باستمرار. باستخدام !dumpheap -statو !objsize -aggregate -stat، يمكنك تحديد الكائنات التي تم وضعها لم يعد وتشخيص مشاكل ذاكرة المختلفة.

PrintException -nested] [ -lines] [< العنوان الكائن ‏‏ استثناء >]

-أو-

PE [-nested] [<عنوان كائن الاستثناء>]

يقوم بعرض و تنسيق حقول أي كائن مشتق من الفئة Exception عند العنوان المحدد, و إذا لم تقم بتحديد عنوان, فإن الأمر PrintException يقوم بعرض الاستثناء الأخير الذي تم طرحه على مؤشر الترابط الحالي.

  • الخيار -nested يعرض تفاصيل حول كائنات الاستثناء المتداخلة.

  • -linesيعرض خيار معلومات المصدر، إذا كان متوفراً.

يمكنك استخدام هذا الأمر لتنسيق وعرض الحقل _stackTrace الذي يعتبر صفيف ثنائي.

ProcInfo [-env] [-time] [-mem]

عرض متغيرات البيئة لـلعملية و الوقت kernel CPU و إحصائيات استخدام الذاكرة.

RCWCleanupList <عنوان RCWCleanupList>

يعرض القائمة لـ runtime callable wrappers عند العنوان المحدد التي تنتظر تنظيف.

SaveModule <العنوان الأساسي> <اسم الملف>

يكتب نسخة ما حيث يتم تحميلها في ذاكرة عند العنوان المحدد إلى الملف المحدد.

SOSFlush

يمسح ذاكرة تخزين مؤقت داخلية SOS.

StopOnException [-derived] [-create | -create2] <‏‏ استثناء> <رقم pseudo-register>

عند طرح الاستثناء المحدد فإن ذلك يؤدي لإيقاف المصحح, لكن إلى متابعة تشغيله عندما يتم طرح الاستثناءات الأخرى.

الخيار -derived يمسك بالاستثناء المحدد و كل ‏‏استثناء مستمد من الاستثناء المحدد.

SyncBlk [-all | <syncblk number>]

يعرض البنيات المحددة SyncBlock بنية أو كلها SyncBlock, و إذا لم تقم بتمرير أية وسائط, فإن الأمر SyncBlk يعرض البنية SyncBlock المقابلة للكائنات التي يمتلكها مؤشر ترابط.

بنية SyncBlock تعتبر بمثابة حاوية لمعلومات إضافية التي لا تحتاج لإنشائها لكل كائن, و يمكنها تقييد بيانات توافق COM و شفرات التجزئة و معلومات تأمين عمليات مؤشر ترابط آمن.

ThreadPool

يعرض معلومات حول تجمع عمليات جزئية التي تمت إدارتها، بما في ذلك رقم طلبات العمل في قائمة الانتظار، رقم من عمليات جزئية لمنفذ الإكمال، و رقم من أجهزة ضبط الوقت.

Token2EE<اسم وحدة نمطية> <الرمز المميز>

يحول بيانات التعريف المحددة لرمز مميز في الوحدة النمطية المحددة إلى بنية MethodTable أو بنية MethodDesc.

يمكنك تمرير * لمعلمة اسم الوحدة النمطية للعثور على ما يترجم لهذا الرمز المميز في كل وحدة نمطية مدارة تم تحميلها, و يمكنك أيضاً تمرير اسم مصحح الأخطاء لوحدة نمطية, مثل mscorlib أو image00400000.

Threads [-live] [-special]

يعرض كافة مؤشرات الترابط المدارة في العملية.

الأمر Threads يعرض معرّف اختصار مصحح الأخطاء و وقت تشغيل اللغة العامة و نظام التشغيل لمعرّف مؤشر الترابط. بالإضافة إلى ذلك، فإن الأمر Threads يعرض عمود مجال يشير إلى مجال التطبيق الذي يقوم بتنفيذ مؤشر ترابط و عمود APT الذي يعرض الوضع الحيز لـ COM و عمود استثناء يعرض الاستثناء الأخير الذي تم طرحه في مؤشر الترابط.

  • الخيار -live يعرض مؤشرات ترابط مقترنة بمؤشر ترابط مباشر.

  • الخيار -special يعرض كافة مؤشرات الترابط الخاصة التي تم إنشاؤها بواسطة CLR, عمليات جزئية الخاصة بتضمين عمليات جزئية تجميع البيانات المهملة (في المتزامن و تجميع البيانات المهملة الخادم)، المصحح مؤشرات ترابط مساعد، مؤشرات ترابط أداة الإنهاء، AppDomainإلغاء تحميل عمليات جزئية، و مؤشر ترابط عداد الوقت تجمع عمليات جزئية.

ThreadState <حقل القيمة الحالة>

عرض الولاية مؤشر ترابط. valueمعلمة هو القيمة Stateالحقل في Threadsتقرير الإخراج.

مثال:

    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] <اسم ملف>

قم بكتابة المعلومات كومة ذاكرة مؤقتة إلى المحدد ملف بتنسيق فهمها proملفr CLR. و يؤدي الخيار -xml إلى الأمر TraverseHeap لتنسيق الملف كـ XML.

يمكنك تنزيل محلل ملفات التعريف CLR من مركز التنزيل لـ Microsoft.

U [-gcinfo] [-ehinfo] [-n] <MethodDesc address> | <Code address>

عرض توضيحي التفكيك أسلوب مدارة المحدد بواسطة MethodDescمؤشر بنية للأسلوب أو بعنوان التعليمات برمجية داخل نص الأسلوب. و الأمر U يعرض الأسلوب بالكامل من البداية إلى النهاية مع التعليقات التوضيحية التي تقوم بتحويل الرموز المميزة لبيانات التعريف إلى أسماء.

  • يؤدي الخيار -gcinfo إلى الأمر U لعرض البنية GCInfo للأسلوب.

  • الخيار -ehinfo يعرض معلومات استثناء للأسلوب, و يمكنك أيضاً الحصول على هذه المعلومات مع الأمر EHInfo.

  • -nتعطيل خيار لعرض أسماء الملفات المصدر وأرقام الأسطر. إذا كان المصحح للخيار المحدد SYMOPT_LOAD_LINES، SOS يبحث رموزاً لكل إطار المدارة و، إذا كان ناجحاً، يعرض اسم الملف المصدر المقابلة و رقم السطر. يمكنك تحديد -nخيار إلى تعطيل هذا سلوك.

VerifyHeap

يتحقق من كومة الذاكرة المؤقتة لحاوي المهملات لإشارات التلف و يعرض أي من الأخطاء التي تم العثور عليها.

يمكن أن يحدث تلف لكومة ذاكرة تخزين البيانات بسبب استدعاء النظام الأساسي للمكالمات التي يتم بناؤها بشكل غير صحيح.

VerifyObj <عنوان كائن>

التحقق من الكائن الذي هو تمرير كوسيطة للعلامات للتلف.

VMMap

يجتاز مساحة العنوان الظاهرية و يعرض نوع الحماية التي يتم تطبيقها على كل منطقة.

VMStat

يوفر طريقة عرض تلخيص لمساحة العنوان الظاهرية بأمر من كل نوع من الحماية المطبقة عل تلك الذاكرة (النسخة الحرة, المحجوزة, الإلزامية, الخاصة, التعيين, الصورة), و يقوم العمود الكلي بعرض نتيجة ضرب العمود AVERAGE بالعمود COUNT BLK.

ملاحظات

استخدم ملحق تصحيح الأخطاء SOS عن طريق تحميله إلى المصحح WinDbg.exe و الذي يتوفر أيضاً في الـ WDK و موقع ويب أدوات المطور أو في ‏‫Visual Studio. يمكنك تنفيذ الأوامر داخل WinDgb.exe أو داخل النافذة فوري من ‏‫Visual Studio.

يتيح ملحق تصحيح SOS تقوم بعرض معلومات حول تعليمات برمجية التي هو التشغيل داخل وقت تشغيل اللغة العامة. على سبيل المثال، يمكنك استخدام ملحق تصحيح الأخطاء SOS لعرض معلومات حول كومة الذاكرة المؤقتة المدارة و للبحث عن تلف كومة ذاكرة تخزين البيانات و عرض أنواع البيانات الداخلية المستخدمة بواسطة وقت التشغيل ثم عرض معلومات حول كافة التعليمات البرمجية المدارة التي تم تشغيلها داخل وقت التشغيل.

تحميل ملحق تصحيح الأخطاء SOS

لتحميل ملحق التصحيح SOS في المصحح WinDbg.exe, قم بتشغيل الأمر التالي في الأداة:

.loadby sos mscorwks

لتحميل ملحق التصحيح SOS في ‏‫Visual Studio, قم بتشغيل الأمر التالي في النافذة فوري أثناء التصحيح:

.load SOS.dll

إذا كان الأمر ناجحاً، فهو يعيد الرسالة التالية في النافذة فوري:

extension C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll loaded

يجب عليك تمكين التصحيح الغير مدار في إعدادات المشروع من الحل الخاص بك قبل أن تتمكن من تحميل ملحق التصحيح SOS. بالنسبة لبعض اللغات، فإن التصحيح الغير مدار يتم تعطيله بشكل افتراضي, و لا تسمح بعض الأنظمة الأساسية بتصحيح التعليمات البرمجية المدارة و غير المدارة في نفس الوقت.

ملاحظةملاحظة

لعرض النافذة فوري في ‏‫Visual Studio, على القائمة تصحيح، قم بالإشارة إلى نوافذ ثم انقر فوق الخيار فوري.يمكنك أيضاً فتح النافذة فوري في ‏‫Visual Studio بالضغط على الزر 'Ctrl' + الزر 'Alt' + الزر 'I'

يقوم WinDbg.exe و ‏‫Visual Studio باستخدام إصدار من SOS.dll الذي يتوافق مع الإصدار من Mscorwks.dll قيد الاستخدام حالياً, و في الإصدارات 1.1 و 2.0 من .NET Framework, فإن SOS.dll مثبت في نفس الدليل كـ Mscorwks.dll. بشكل افتراضي, يجب عليك استخدام الإصدار SOS.dll الذي يتطابق مع الإصدار الحالي من Mscorwks.dll.

لاستخدام ملف النسخة الاحتياطية تم إنشاؤها تشغيل كمبيوتر آخر، تأكد من أن الملف Mscorwks.dll ذلك came مع ذلك التثبيت هو في مسار الرمز الخاص بك، وتحميل الإصدار المناسب من SOS.dll.

اكتب الأمر التالي في مصحح الأخطاء Windows لتحميل إصدار محدد من SOS.dll :

.load <full path to sos.dll>

أمثلة

يعرض الأمر التالي المحتويات لصفيف في العنوان 00ad28d0. إن العرض يبدأ من العنصر الثاني و يستمر للعناصر الخمسة.

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

يعرض الأمر التالي المحتويات لتجميع في العنوان 1ca248.

!dumpassembly 1ca248

يعرض الأمر التالي معلومات حول كومة الذاكرة المؤقتة لحاوي المهملات.

!dumpheap

يكتب الأمر التالي محتويات السجل الضغط في ذاكرة إلى ملف (افتراضي) يسمى StressLog.txt في الدليل الحالي.

!DumpLog

يقوم الأمر التالي بعرض البنية MethodDesc على العنوان 902f40.

!dumpmd 902f40

يقوم الأمر التالي بعرض معلومات حول وحدة نمطية في العنوان 1caa50.

!dumpmodule 1caa50

يقوم الأمر التالي بعرض معلومات حول كائن في العنوان a79d40.

!DumpObj a79d40

يعرض الأمر التالي حقول فئة القيمة عنوان 00a79d9cاستخدام أسلوب الجدول عند العنوان 0090320c.

!DumpVC 0090320c 00a79d9c

يعرض الأمر التالي ذاكرة العملية المستخدمة من قبل حاوي المهملات.

!eeheap -gc

يعرض الأمر التالي كافة الكائنات المجدولة للانتهاء

!finalizequeue

يقوم الأمر التالي بتحديد مجال التطبيق لكائن في العنوان 00a79d98.

!findappdomain 00a79d98

يقوم الأمر التالي بعرض كافة مؤشرات حاوي المهملات في العملية الحالية.

!gcinfo 5b68dbb8 

يعرض الأمر التالي البنيات MethodTable و EEClass للحصول على الأسلوب Main في الفئة MainClass في الوحدة النمطية unittest.exe.

!name2ee unittest.exe MainClass.Main

يعرض الأمر التالي معلومات حول الرمز المميز لبيانات التعريف في العنوان 02000003 في الوحدة النمطية unittest.exe.

!token2ee unittest.exe 02000003

راجع أيضًا:

المرجع

موجه أوامر Visual Studio.

موارد أخرى

أدوات .NET Framework