تثبيت وتكوين WinDBG لتحليل عمليات تفريغ الذاكرة. أدوات تصحيح أخطاء Windows: تشخيص وإصلاح أدوات تصحيح أخطاء الموت الزرقاء لاستخدام Windows

عند حدوث فشل فادح، يتعطل نظام التشغيل Windows ويعرض شاشة الموت الزرقاء (BSOD). محتوى ذاكرة الوصول العشوائيويتم كتابة كافة المعلومات حول الخطأ الذي يحدث في ملف المبادلة. المرة التالية تمهيد ويندوزيتم إنشاء تفريغ الأعطال ج معلومات التصحيحبناء على البيانات المخزنة. يتم إنشاء إدخال خطأ فادح في سجل أحداث النظام.

انتباه!لا يتم إنشاء تفريغ الأعطال في حالة فشل النظام الفرعي للقرص أو حدوث خطأ فادح أثناء المرحلة الأولية من تشغيل Windows.

أنواع مخلفات الأعطال في نظام التشغيل Windows

استخدام نظام التشغيل الحالي Windows 10 كمثال ( مشغل برامج وندوز 2016) ضع في اعتبارك الأنواع الرئيسية من عمليات تفريغ الذاكرة التي يمكن للنظام إنشاؤها:

  • تفريغ الذاكرة المصغرة(256 كيلو بايت). يحتوي هذا النوع من الملفات على الحد الأدنى من المعلومات. فهو يحتوي فقط على رسالة خطأ الموت الزرقاء، ومعلومات حول برامج التشغيل، والعمليات التي كانت نشطة في وقت التعطل، والعملية أو مؤشر ترابط kernel الذي تسبب في التعطل.
  • تفريغ ذاكرة النواة. عادةً ما تكون صغيرة الحجم — ثلث حجم الذاكرة الفعلية. يعد تفريغ ذاكرة kernel أكثر تفصيلاً من تفريغ صغير. وهو يحتوي على معلومات حول برامج التشغيل وبرامج وضع kernel، ويتضمن الذاكرة المخصصة لنواة Windows وطبقة تجريد الأجهزة (HAL)، والذاكرة المخصصة لبرامج التشغيل وبرامج وضع kernel الأخرى.
  • تفريغ الذاكرة كاملة. الأكبر حجمًا ويتطلب ذاكرة تساوي ذاكرة الوصول العشوائي (RAM) لنظامك بالإضافة إلى 1 ميجا بايت المطلوبة بواسطة Windows لإنشاء هذا الملف.
  • تفريغ الذاكرة التلقائي. يتوافق مع تفريغ ذاكرة kernel من حيث المعلومات. والفرق الوحيد هو مقدار المساحة التي يستخدمها لإنشاء ملف التفريغ. هذا النوع من الملفات لم يكن موجودًا في نظام التشغيل Windows 7. وتمت إضافته في نظام التشغيل Windows 8.
  • تفريغ الذاكرة النشطة. يزيل هذا النوع العناصر التي لا يمكنها تحديد سبب فشل النظام. تمت إضافة هذا إلى نظام التشغيل Windows 10 وهو مفيد بشكل خاص إذا كنت تستخدم جهازًا افتراضيًا، أو إذا كان نظامك مضيف Hyper-V.

كيفية تمكين تفريغ الذاكرة في نظام التشغيل Windows؟

باستخدام Win+Pause، افتح نافذة إعدادات النظام، ثم حدد " خيارات إضافيةأنظمة"(إعدادات النظام المتقدمة). في ال " بالإضافة إلى ذلك" (متقدم)، القسم "" (بدء التشغيل والاسترداد) انقر فوق الزر " خيارات"(إعدادات). في النافذة التي تفتح، قم بتكوين الإجراءات التي سيتم اتخاذها عند فشل النظام. افحص ال " تسجيل الأحداث في سجل النظام" (اكتب حدثًا في سجل النظام)، حدد نوع التفريغ الذي يجب إنشاؤه عند تعطل النظام. إذا كان في خانة الاختيار " استبدال ملف التفريغ الموجود"(الكتابة فوق أي ملف موجود) حدد المربع، سيتم الكتابة فوق الملف في كل مرة يحدث فيها فشل. من الأفضل إلغاء تحديد هذا المربع، ثم سيكون لديك المزيد من المعلومات للتحليل. قم أيضًا بتعطيل إعادة التشغيل تلقائيًا.

في معظم الحالات، سيكون تفريغ ذاكرة صغير كافيًا لتحليل سبب شاشة الموت الزرقاء.

الآن، عند حدوث شاشة الموت الزرقاء، يمكنك تحليل ملف التفريغ والعثور على سبب الفشل. يتم حفظ التفريغ المصغر في المجلد %systemroot%\minidump بشكل افتراضي. لتحليل ملف التفريغ أوصي باستخدام البرنامج WinDBG(مصحح أخطاء Microsoft Kernel).

تثبيت WinDBG على نظام التشغيل Windows

جدوى WinDBGمتضمن في " ويندوز 10 SDK"(ويندوز 10 SDK). .

يسمى الملف Winsdksetup.exe, الحجم 1.3 ميجا بايت .

قم بتشغيل التثبيت واختر ما تريد القيام به بالضبط - قم بتثبيت الحزمة على هذا الكمبيوتر أو قم بتنزيلها للتثبيت على أجهزة كمبيوتر أخرى. لنقم بتثبيت الحزمة على الكمبيوتر المحلي.

يمكنك تثبيت الحزمة بأكملها، ولكن لتثبيت أداة تصحيح الأخطاء فقط، حدد أدوات التصحيح لنظام التشغيل Windows.

بعد التثبيت، يمكن العثور على اختصارات WinDBG في قائمة البداية.

إعداد اقتران ملفات .dmp مع WinDBG

لفتح ملفات التفريغ بنقرة بسيطةقم بتعيين الامتداد .dmp إلى الأداة المساعدة WinDBG.

  1. يفتح سطر الأوامركمسؤول وقم بتشغيل الأوامر لنظام 64 بت: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    Windbg.exe -IA
    لنظام 32 بت:
    C:\ملفات البرنامج (x86)\Windows Kits\10\Debuggers\x86
    Windbg.exe -IA
  2. ونتيجة لذلك، سيتم تعيين أنواع الملفات: .DMP، .HDMP، .MDMP، .KDMP، .WEW إلى WinDBG.

إعداد خادم رمز التصحيح في WinDBG

رموز التصحيح (رموز التصحيح أو ملفات الرموز) عبارة عن كتل من البيانات التي تم إنشاؤها أثناء تجميع البرنامج مع الملف القابل للتنفيذ. تحتوي كتل البيانات هذه على معلومات حول أسماء المتغيرات، والوظائف المسماة، والمكتبات، وما إلى ذلك. هذه البيانات ليست مطلوبة عند تنفيذ البرنامج، ولكنها مفيدة عند تصحيح أخطائه. يتم تجميع مكونات Microsoft باستخدام رموز يتم توزيعها من خلال خادم Microsoft Icon Server.

قم بتكوين WinDBG إلى استخدام مايكروسوفتخادم الرمز:

  • افتح ويندبغ؛
  • اذهب إلى القائمة ملف –> مسار ملف الرمز؛
  • اكتب سطرًا يحتوي على عنوان URL لتنزيل رموز التصحيح من موقع Microsoft على الويب والمجلد الخاص بحفظ ذاكرة التخزين المؤقت: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols في المثال، يتم تنزيل ذاكرة التخزين المؤقت إلى المجلد E:\Sym_WinDBG، يمكنك الإشارة إلى أي منها.
  • لا تنس حفظ التغييرات في القائمة ملف–>حفظ مساحة العمل؛

سيبحث WinDBG عن الرموز في المجلد المحلي، وإذا لم يجد الرموز الضرورية فيه، فسيقوم تلقائيًا بتنزيل الرموز من الموقع المحدد. إذا كنت تريد إضافة مجلد الرموز الخاص بك، فيمكنك القيام بذلك على النحو التالي:

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

إذا لم يكن لديك اتصال بالإنترنت، قم أولاً بتنزيل حزمة الرموز من مورد حزم رموز Windows.

تحليل تفريغ الأعطال في WinDBG

يقوم مصحح أخطاء WinDBG بفتح ملف التفريغ وتنزيل الرموز الضرورية لتصحيح الأخطاء من مجلد محلي أو من الإنترنت. لا يمكنك استخدام WinDBG أثناء هذه العملية. في أسفل النافذة (في سطر أوامر مصحح الأخطاء) تظهر الرسالة المصحح غير متصل.

يتم إدخال الأوامر في سطر الأوامر الموجود أسفل النافذة.

أهم شيء يجب الانتباه إليه هو رمز الخطأ، والذي يُشار إليه دائمًا بالنظام السداسي العشري وله النموذج 0xXXXXXXXXX(مشار إليه في أحد الخيارات - STOP: , 07/02/2019 0008F, 0x8F). في مثالنا، رمز الخطأ هو 0x139.

يعرض مصحح الأخطاء تشغيل الأمر!analyze -v، ما عليك سوى تمرير مؤشر الماوس فوق الرابط والنقر عليه. ما هو هذا الأمر ل؟

  • يقوم بإجراء تحليل أولي لتفريغ الذاكرة ويوفر معلومات مفصلةلبدء التحليل.
  • سيعرض هذا الأمر رمز STOP والاسم الرمزي للخطأ.
  • يُظهر مجموعة مكالمات الأوامر التي أدت إلى التعطل.
  • بالإضافة إلى ذلك، يتم عرض عنوان IP وأخطاء العملية والتسجيل هنا.
  • يمكن للفريق تقديم توصيات جاهزة لحل المشكلة.

النقاط الرئيسية التي يجب عليك الانتباه إليها عند التحليل بعد تنفيذ الأمر!تحليل –v (القائمة غير مكتملة).

1: kd> !analyze -v


* *
* تحليل الأخطاء *
* *
*****************************************************************************
الاسم الرمزي لخطأ STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
وصف الخطأ (أدى أحد مكونات kernel إلى إتلاف بنية بيانات مهمة. ومن المحتمل أن يسمح هذا التلف للمهاجم بالتحكم في هذا الجهاز):

لقد تسبب أحد مكونات kernel في إتلاف بنية بيانات مهمة. من المحتمل أن يسمح الفساد لمستخدم ضار بالتحكم في هذا الجهاز.
وسيطات الخطأ:

الحجج:
Arg1: 0000000000000003، تم إتلاف LIST_ENTRY (أي إزالة مزدوجة).
Arg2: ffffd0003a20d5d0، عنوان إطار الملاءمة للاستثناء الذي تسبب في التحقق من الأخطاء
Arg3: ffffd0003a20d528، عنوان سجل الاستثناء للاستثناء الذي تسبب في التحقق من الأخطاء
Arg4: 000000000000000، محجوزة
تفاصيل التصحيح:
------------------

يوضح العداد عدد المرات التي تعطل فيها النظام بسبب خطأ مماثل:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

رمز الخطأ STOP بتنسيق مختصر:

BUGCHECK_STR: 0x139

العملية التي حدث الفشل خلالها (ليس بالضرورة سبب الخطأ، فقط في وقت الفشل كانت هذه العملية قيد التشغيل في الذاكرة):

العملية_NAME: sqlservr.exe

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

ERROR_CODE: (NTSTATUS) 0xc0000409 - اكتشف النظام تجاوزًا للمخزن المؤقت المستند إلى المكدس في هذا التطبيق. من المحتمل أن يسمح هذا التجاوز لمستخدم ضار بالتحكم في هذا التطبيق.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - اكتشف النظام تجاوزًا للمخزن المؤقت المستند إلى المكدس في هذا التطبيق. من المحتمل أن يسمح هذا التجاوز لمستخدم ضار بالتحكم في هذا التطبيق.

المكالمة الأخيرة على المكدس:

LAST_CONTROL_TRANSFER: من ffff8040117d6a9 إلى ffff8040116b0a0

مكدس الاستدعاءات في وقت الفشل:

STACK_TEXT:
ffffd000`3a20d2a8 ffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528: nt!KeBugCheckEx
ffffd000`3a20d2b0 ffff804`0117da50: ffffe000`f3ab9080 fffe000`fc37e001 ffffd000`3a20d5d0 ffff804`0116e2a2: nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 ffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiFastFailDispatch+0xd 0
ffffd000`3a20d5d0 ffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 ffff804`000006f9: nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 ffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: nt! ؟؟ ::FNODOBFM::`سلسلة"+0x17252
ffffd000`3a20d8c0 ffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 fffe001`0a34c600: nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 ffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380: nt!NtWriteFile+0x694
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000`00000000`00000000: nt!KiSystemServiceCopyEnd+0 ×13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000`00000000`00000000`00000000`00000000: 0x00007ffb`475 307دا

قسم الكود الذي حدث فيه الخطأ:

متابعة_IP:
nt!KiFastFailDispatch+d0
ffff804`0117da50 c644242000 حركة البايت ptr ,0
خطأ_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: مالك الآلة

اسم الوحدة في جدول كائنات kernel. إذا كان المحلل قادرا على الكشف سائق إشكالي، يتم عرض الاسم في الحقلين MODULE_NAME وIMAGE_NAME:

MODULE_NAME:nt
IMAGE_NAME: ntkrnlmp.exe

1: دينار كويتي> lmvm nt
تصفح قائمة الوحدات الكاملة
ملف صورة الرمز الذي تم تحميله: ntkrnlmp.exe
ملف صورة الذاكرة المعينة: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
مسار الصورة: ntkrnlmp.exe
اسم الصورة: ntkrnlmp.exe
الاسم الداخلي: ntkrnlmp.exe
اسم الملف الأصلي: ntkrnlmp.exe
إصدار المنتج: 6.3.9600.18946
إصدار الملف: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

في المثال المذكور، أشار التحليل إلى ملف kernel ntkrnlmp.exe. عندما يشير تحليل تفريغ الذاكرة إلى برنامج تشغيل النظام (مثل win32k.sys) أو ملف kernel (كما في مثالنا ntkrnlmp.exe)، فمن المرجح أن هذا الملفليس سبب المشكلة. في كثير من الأحيان يتبين أن المشكلة تكمن في برنامج تشغيل الجهاز، إعدادات BIOSأو عطل في المعدات.

إذا رأيت أن شاشة الموت الزرقاء ناجمة عن برنامج تشغيل تابع لجهة خارجية، فستتم الإشارة إلى اسمه في القيمتين MODULE_NAME وIMAGE_NAME.

على سبيل المثال:

مسار الصورة: \SystemRoot\system32\drivers\cmudaxp.sys
اسم الصورة: cmudaxp.sys

افتح خصائص ملف برنامج التشغيل وتحقق من نسخته. في معظم الحالات، يتم حل مشكلة برامج التشغيل عن طريق تحديثها.

في 22 يونيو 2010

في السابق، كان Windbg متاحًا للتنزيل بشكل منفصل. ولكن بالنسبة للإصدارات الأحدث، تحتفظ Microsoft به كجزء من Windows SDK. يرجى العثور على روابط التحميل أدناه.

ويندوز 10

يمكن تنزيل أحدث إصدار من Windbg لنظام التشغيل Windows 7 من الرابط https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

ويندوز 7

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

تقوم الحزمة أعلاه بتثبيت إصدار Windbg 6.12. إذا كنت تريد التثبيت السريع لـwindbg، فيمكنك الانتقال إلى الإصدار الأقدم (6.11) الذي يمكن تنزيله منه
الرابط الوارد في نهاية هذا المنصب.

بمجرد الانتهاء من التثبيت، يمكنك العثور على البرنامج في قائمة ابدأ -> كافة البرامج -> أدوات تصحيح الأخطاء لنظام التشغيل Windows -> Windbg

تقديم WinDBG - الجزء الأول

الكسندر أنتيبوف

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


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

هذه هي المقالة الأولى في سلسلة مخصصة لـ WinDBG. قائمة بجميع المقالات المدرجة في هذه السلسلة:

  • الجزء 1 - التثبيت، الواجهة، الرموز، تصحيح الأخطاء عن بعد/المحلي، نظام المساعدة، الوحدات النمطية، السجلات.
  • الجزء 2 - نقاط التوقف.
  • الجزء 3 - فحص الذاكرة، وتصحيح أخطاء البرنامج خطوة بخطوة، والنصائح والحيل.

في هذه المقالة سنلقي نظرة على التثبيت والإرفاق بعملية ما، وفي المقالات التالية سنلقي نظرة على نقاط التوقف وتصحيح الأخطاء خطوة بخطوة وفحص الذاكرة.

تثبيت ويندبغ

بالمقارنة مع Windows 7، خضعت عملية تثبيت WinDBG في Windows 8 لتغييرات طفيفة. في هذا القسم سننظر في تثبيت مصحح الأخطاء لكليهما أنظمة التشغيل.

تثبيت WinDBG على نظام التشغيل Windows 8

في Windows 8، يتم تضمين WinDBG في Windows Driver Kit (WDK). يمكنك تثبيت Visual Studio وWDK، أو تثبيت حزمة Debugging Tools for Windows 8.1 بشكل منفصل، والتي تتضمن WinDBG.

سيسألك برنامج التثبيت عما إذا كنت تريد تثبيت WinDBG محليًا أو تنزيل حزمة التطوير بأكملها لجهاز كمبيوتر آخر. هذا الأخير هو في الأساس ما يعادلها المثبت دون اتصالوهو أمر مناسب جدًا إذا كنت تريد تثبيت الحزمة على أنظمة أخرى في المستقبل.

الشكل 1: تحديد نوع التثبيت

في النافذة التالية، تحتاج إلى إلغاء تحديد كافة العناصر باستثناء "أدوات التصحيح لنظام التشغيل Windows" والنقر فوق الزر "تنزيل".

بمجرد انتهاء برنامج التثبيت من عمله، انتقل إلى الدليل الذي تم تنزيل الحزمة فيه (افتراضيًا هو c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) وانتقل إلى إجراءات التثبيت.

تثبيت WinDBG على نظام التشغيل Windows 7 والإصدارات الأقدم

بالنسبة لنظام التشغيل Windows 7 والإصدارات الأقدم، يعد WinDBG جزءًا من حزمة "Debugging Tools for Windows" المضمنة مع Windows SDK و.Net Framework. سيُطلب منك تنزيل برنامج التثبيت ثم تحديد "Debugging Tools for Windows" أثناء عملية التثبيت.

أثناء التثبيت، أحدد خيار "أدوات التصحيح" ضمن "الحزم القابلة لإعادة التوزيع" لإنشاء برنامج تثبيت مستقل لتسهيل عمليات التثبيت المستقبلية.

الشكل 2: تحديد خيارات التثبيت لإنشاء برنامج تثبيت مستقل

بمجرد اكتمال التثبيت، يجب أن يكون لديك مثبتات WinDBG لمنصات مختلفة (في الدليل c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

الشكل 3: مجلد يحتوي على مثبتات WinDBG لمنصات مختلفة

واجهة ويندبغ

الشكل 4: مظهر WinDBG

أول مرة ترى مظهر WinDGB، ستدرك أن مصحح الأخطاء بسيط بشكل مخيف. يتم التعرف على معظم وظائف WinDBG أثناء عملية تصحيح الأخطاء. بدلاً من قضاء الوقت في وصف الواجهة، سنغطي في الأقسام التالية النقاط الأكثر أهمية فقط.

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

الشكل 5: نافذة أوامر WinDBG

حرف او رمز

في معظم الحالات، لا يتطلب WinDBG أي إعدادات خاصة ويعمل بشكل صحيح خارج الصندوق. لكن الشيء المهم الذي يجب تكوينه هو الشخصيات. الرموز هي ملفات يتم إنشاؤها مع الملف القابل للتنفيذ عند تجميع البرنامج وتحتوي على معلومات تصحيح الأخطاء (الوظائف وأسماء المتغيرات). تسمح لك معلومات التصحيح بفحص وظيفة التطبيق أثناء تصحيح الأخطاء أو التفكيك. يتم تجميع العديد من مكونات Microsoft باستخدام الرموز التي يتم توزيعها من خلال Microsoft Icon Server. مع بقية الملفات القابلة للتنفيذ، كل شيء ليس ورديًا جدًا - نادرًا ما يتم تضمين الملفات التي تحتوي على معلومات التصحيح في التطبيق. في معظم الحالات، تقوم الشركات بتقييد الوصول إلى هذه المعلومات.

لتكوين WinDBG لاستخدام Microsoft Icon Server، انتقل إلى File:Symbol File Path وقم بتعيين المسار إلى SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. بالطبع، من الغريب بعض الشيء أن يتم استخدام العلامات النجمية كفاصل. بعد إعداد Microsoft Symmbols Server، سيتم تنزيل الرموز إلى المجلد C:\Symbols.

الشكل 6: إعداد خادم الرموز لـ Microsoft

سيقوم WinDBG تلقائيًا بتحميل رموز الملفات الثنائية عند الحاجة. يمكنك أيضًا إضافة مجلد الرموز الخاص بك، مثل هذا:

SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

إضافة الرموز أثناء التصحيح

إذا كنت بحاجة إلى استيراد الرموز أثناء تصحيح الأخطاء، فيمكنك القيام بذلك باستخدام .sympath (ستظهر نافذة أوامر عندما تدخل في العملية). على سبيل المثال، لإضافة المجلد c:\SomeOtherSymbolFolder، أدخل الأمر التالي:

0:025> .sympath+ c:\SomeOtherSymbolFolder
مسار البحث عن الرمز هو: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
مسار البحث عن الرمز الموسع هو: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

من الجيد إعادة تحميل الرموز بعد إضافة المسارات أو تغييرها:

0:025> .إعادة التحميل
إعادة تحميل الوحدات الحالية
................................................................
...............................................

التحقق من الرموز المحملة

لمعرفة الوحدات التي تحتوي على رموز محملة، يمكنك استخدام الأمر x*!. على الرغم من أن WinDBG يقوم فقط بتحميل الرموز حسب الحاجة، إلا أن x*! سوف تظهر الرموز التي يمكن تحميلها. يمكنك فرض تحميل الرموز باستخدام الأمر ld * (قد يستغرق هذا بعض الوقت، ويمكنك إيقاف العملية بالانتقال إلى Debug:Break).

الآن يمكننا رؤية الرموز الخاصة بكل وحدة.

الشكل 8: قائمة الرموز

تصحيح عملية محلية

عند تصحيح أخطاء عملية محلية، لديك خياران:

  1. ربط عملية قيد التشغيل بالفعل.
  2. ابدأ العملية عبر WinDBG.

كل أسلوب له مزاياه وعيوبه. على سبيل المثال، إذا قمت بتشغيل برنامج من خلال WinDBG، فلديك حق الوصول إلى بعض خيارات التصحيح الخاصة (على سبيل المثال، تصحيح أخطاء الكومة) التي يمكن أن تتسبب في تعطل التطبيق. ومن ناحية أخرى، هناك أيضًا برامج تتعطل عند إرفاق مصحح أخطاء بها. تتحقق بعض التطبيقات (خاصة البرامج الضارة) من وجود مصحح أخطاء في النظام أثناء بدء التشغيل، وبالتالي، في هذه الحالة يكون من المنطقي التشبث بعملية قيد التشغيل بالفعل. في بعض الأحيان، تقوم بتصحيح أخطاء خدمة Windows التي تقوم بتعيين بعض المعلمات أثناء بدء التشغيل، لذا ولتبسيط عملية التصحيح، فمن الأفضل أيضًا ربطها بعملية قيد التشغيل بدلاً من تشغيل الخدمة من خلال مصحح الأخطاء. يدعي بعض الأشخاص أن تشغيل العملية من خلال مصحح الأخطاء له تأثير خطير على الأداء. باختصار، جرب كلاهما واختر ما يناسبك. إذا كنت تفضل طريقة معينة لسبب ما، شارك أفكارك في التعليقات!

بدء العملية

إذا كنت تقوم بتصحيح أخطاء تطبيق مستقل يتم تشغيله محليًا ولا يتصل بالشبكة، فقد ترغب في تشغيله من خلال WinDBG. ومع ذلك، هذا لا يعني أنه لا يمكنك ربط عملية جارية بالفعل. اختر الطريقة الأكثر ملاءمة لك.

بدء العملية ليس بالأمر الصعب. انتقل إلى "ملف: فتح قابل للتنفيذ" وحدد الملف القابل للتنفيذ الذي تريد تصحيحه. يمكنك أيضًا تحديد الوسائط أو تعيين دليل البداية:

الشكل 9: التحديد ملف تنفيذيلتصحيح الأخطاء

عملية اتصال

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

للإرفاق بعملية قيد التشغيل بالفعل، انتقل إلى "ملف: إرفاق بعملية" ثم حدد معرف العملية (PID) أو اسم العملية. تذكر أنه يجب أن تتمتع بالحقوق المناسبة للانضمام إلى العملية.

الشكل 10: تحديد العملية المراد ربطها

إذا قام التطبيق بإيقاف تشغيله مؤقتًا بعد الاتصال، فيمكنك استخدام وضع "Noninvaise" عن طريق تحديد المربع المناسب.

تصحيح عملية عن بعد

قد تحتاج في بعض الأحيان إلى تصحيح أخطاء إحدى العمليات على نظام بعيد. سيكون حل هذه المشكلة أكثر ملاءمة باستخدام مصحح أخطاء محلي بدلاً من استخدامه آلة افتراضيةأو آر دي بي. أو ربما تقوم بتصحيح أخطاء عملية LoginUI.exe، والتي لا يمكن الوصول إليها إلا عندما يكون النظام مقفلاً. في مثل هذه الحالات، يمكنك استخدام إصدار محلي من WinDBG والاتصال بالعمليات عن بعد. هناك طريقتان الأكثر شيوعا لحل هذه المشاكل.

جلسات تصحيح الأخطاء الموجودة

إذا كنت قد بدأت بالفعل في تصحيح أخطاء برنامج محليًا (عن طريق الاتصال أو تشغيل عملية من خلال WinDBG)، فيمكنك إدخال أمر محدد وسيقوم WinDBG بتشغيل "المستمع" الذي يمكن لمصحح الأخطاء عن بعد الاتصال به. للقيام بذلك، استخدم الأمر .server:

خادم تكب: المنفذ = 5005

بعد تشغيل الأمر أعلاه، قد ترى تحذيرًا مثل هذا:

الشكل 11: رسالة تحذيرية قد تظهر بعد تشغيل أمر إنشاء المستمع

سيقوم WinDBG بعد ذلك بالإبلاغ عن تشغيل الخادم:

0:005> .الخادم tcp:port=5005
0: -tcp عن بعد: المنفذ = 5005، الخادم = USER-PC

يمكنك الآن الاتصال من مضيف بعيد بجلسة تصحيح موجودة بالانتقال إلى "ملف: الاتصال بجلسة بعيدة" وإدخال شيء مثل ما يلي في حقل النص: tcp:Port=5005,Server=192.168.127.138

الشكل 12: الاتصال عن بعد بجلسة تصحيح الأخطاء

بمجرد الاتصال، ستتلقى تأكيدًا على العميل البعيد:


بدأ الخادم. يمكن للعميل الاتصال بأي من أسطر الأوامر هذه
0: -tcp عن بعد: المنفذ = 5005، الخادم = USER-PC
MACHINENAME\User (tcp 192.168.127.138:13334) متصل في الإثنين 16 ديسمبر 09:03:03 2013

والرسالة في الإصدار المحلي من مصحح الأخطاء:

MACHINENAME\User (tcp 192.168.127.138:13334) متصل في الإثنين 16 ديسمبر 09:03:03 2013

إنشاء خادم بعيد

يمكنك أيضًا إنشاء خادم منفصل باستخدام WinDBG، والاتصال به عن بُعد وتحديد عملية لتصحيح الأخطاء. يمكن القيام بذلك باستخدام ملف dbgsrv.exe الذي تخطط لتصحيح أخطاء العمليات فيه. لبدء مثل هذا الخادم، قم بتشغيل الأمر التالي:

dbgsrv.exe -t tcp:port=5005

الشكل 13: بدء تشغيل خادم بعيد

مرة أخرى، قد تتلقى تحذيرًا أمنيًا يجب عليك قبوله:

الشكل 14: رسالة الأمان التي قد تظهر أثناء بدء تشغيل خادم تصحيح الأخطاء

يمكنك الاتصال بخادم تصحيح الأخطاء بالانتقال إلى ملف: الاتصال بـ Remote Stub وإدخال السطر التالي في حقل النص: برنامج التعاون الفني: المنفذ = 5005، الخادم = 192.168.127.138

الشكل 15: الاتصال بخادم تصحيح الأخطاء

بمجرد الاتصال، لن تتلقى أي إشارات بأنك قمت بالاتصال، ولكن إذا انتقلت إلى "ملف: إرفاق بعملية"، فسترى قائمة بعمليات خادم تصحيح الأخطاء (حيث يتم تشغيل dbgsrv.exe). يمكنك الآن الانضمام إلى العملية كما لو كنت تقوم بها محليًا.

نظام المساعدة

نظام المساعدة في WinDBG رائع. بالإضافة إلى تعلم شيء جديد، يجب أن تكون قادرًا على الحصول على معلومات أساسية حول أحد الأوامر. استخدم الأمر .hh للوصول إلى تعليمات WinDBG:

يمكنك أيضًا الحصول على معلومات مساعدة لأمر محدد. على سبيل المثال، للحصول على مساعدة بشأن الأمر .reload، استخدم الأمر التالي:

Windbg> .hh .إعادة التحميل

أو اذهب فقط إلى قسم التعليمات:المحتويات.

وحدات

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

بمجرد الاتصال بالعملية، سيعرض WinDBG الوحدات المحملة تلقائيًا. على سبيل المثال، فيما يلي الوحدات النمطية بعد الاتصال بـ calc.exe:

إصدار مصحح أخطاء Microsoft (R) Windows 6.12.0002.633 X86
حقوق الطبع والنشر (ج) شركة مايكروسوفت. كل الحقوق محفوظة.

*** انتظر مع إرفاق معلق
مسار البحث عن الرمز هو: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
مسار البحث القابل للتنفيذ هو:
ModLoad: 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad: 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad: 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad: 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad: 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad: 76360000 76401000 C:\Windows\system32\RPCT4.dll
ModLoad: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad: 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

لاحقًا في عملية التصحيح، يمكنك عرض هذه القائمة مرة أخرى باستخدام الأمر lmf:

0:005>إل إم إف
بداية اسم الوحدة النمطية
00a70000 00b30000 كالك C:\Windows\system32\calc.exe
6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
control_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 الإصدار C:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 سيكوست C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 NTLL C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000 LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

يمكنك أيضًا معرفة عنوان التحميل لوحدة معينة باستخدام الأمر "lmf m":

0:005> lmf m kernel32
بداية اسم الوحدة النمطية
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

يمكنك أيضًا الحصول على معلومات حول رأس الصورة لوحدة معينة باستخدام الامتداد!dh ( علامة تعجبيشير إلى امتداد):

0:005> !dh kernel32

نوع الملف: DLL
قيم رأس الملف
آلة 14C (i386)
4 عدد الأقسام
4A5BDAAD ختم التاريخ الإثنين 13 يوليو 21:09:01 2009

0 مؤشر الملف إلى جدول الرموز
0 عدد الرموز
حجم E0 للرأس الاختياري
2102 الخصائص
تنفيذ
آلة الكلمات 32 بت
DLL

قيم الرأس الاختيارية
10ب ماجيك #
9.00 نسخة الرابط
حجم الكود C4600
حجم C800 للبيانات التي تمت تهيئتها
0 حجم البيانات غير المهيأة
510C5 عنوان نقطة الدخول
1000 كود أساسي
----- جديد -----
77550000 قاعدة الصور
محاذاة القسم 1000
200 ملف محاذاة
3 النظام الفرعي (Windows CUI)
إصدار نظام التشغيل 6.01
نسخة الصورة 6.01
6.01 إصدار النظام الفرعي
حجم الصورة D4000
حجم 800 رأس
المجموع الاختباري D5597
00040000 حجم احتياطي المكدس
00001000 حجم التزام المكدس
00100000 حجم احتياطي الكومة
00001000 حجم التزام الكومة
140 خصائص DLL
قاعدة ديناميكية
متوافق مع NX
عنوان B4DA8 [A915] لدليل التصدير
عنوان BF6C0 [1F4] لدليل الاستيراد
عنوان C7000 [520] لدليل الموارد
0 [ 0] عنوان دليل الاستثناءات
0 [ 0] عنوان دليل الأمان
عنوان C8000 [B098] لدليل نقل القاعدة
عنوان C5460 [38] لدليل التصحيح
0 [ 0] عنوان دليل الوصف
0 [ 0] عنوان الدليل الخاص
0 [ 0] عنوان دليل تخزين الخيوط
816B8 [40] عنوان دليل تكوين التحميل
278 [408] عنوان دليل الاستيراد المنضم
1000 عنوان [DE8] لدليل جدول عناوين الاستيراد
0 [ 0] عنوان دليل الاستيراد المؤجل
0 [ 0] عنوان دليل رأس COR20
0 [ 0] عنوان الدليل المحجوز

رأس القسم رقم 1
اسم النص
الحجم الظاهري C44C1
1000 عنوان افتراضي
حجم البيانات الخام C4600
800 مؤشر ملف للبيانات الأولية

0 عدد عمليات النقل
0 عدد أرقام الأسطر
60000020 علم
شفرة
(لم يتم تحديد محاذاة)
تنفيذ القراءة

دلائل التصحيح(2)
نوع مؤشر عنوان الحجم
السيرة الذاتية 25 c549c c4c9c التنسيق: RSDS، الدليل الإرشادي، 2، kernel32.pdb
(10) 4 ج5498 ج4ج98

رأس القسم رقم 2
اسم البيانات
الحجم الظاهري FEC
العنوان الافتراضي C6000
E00 حجم البيانات الخام
مؤشر الملف C4E00 إلى البيانات الأولية
0 مؤشر الملف إلى جدول النقل
0 مؤشر الملف إلى أرقام الأسطر
0 عدد عمليات النقل
0 عدد أرقام الأسطر
أعلام C0000040
البيانات المبدئية
(لم يتم تحديد محاذاة)
قراءة و كتابة

رأس القسم رقم 3
اسم .rsrc
520 الحجم الظاهري
العنوان الافتراضي C7000
600 حجم البيانات الخام
مؤشر الملف C5C00 إلى البيانات الأولية
0 مؤشر الملف إلى جدول النقل
0 مؤشر الملف إلى أرقام الأسطر
0 عدد عمليات النقل
0 عدد أرقام الأسطر
40000040 أعلام
البيانات المبدئية
(لم يتم تحديد محاذاة)
يقرأ فقط

رأس القسم رقم 4
اسم .reloc
الحجم الافتراضي B098
العنوان الظاهري C8000
حجم B200 من البيانات الخام
مؤشر الملف C6200 إلى البيانات الأولية
0 مؤشر الملف إلى جدول النقل
0 مؤشر الملف إلى أرقام الأسطر
0 عدد عمليات النقل
0 عدد أرقام الأسطر
42000040 أعلام
البيانات المبدئية
يمكن التخلص منه
(لم يتم تحديد محاذاة)
يقرأ فقط

الرسائل والاستثناءات

بعد الاتصال بعملية ما، يتم عرض قائمة الوحدات أولاً، ومن ثم قد تظهر رسائل أخرى. على سبيل المثال، عندما نربط ملف calc.exe، يقوم WinDBG تلقائيًا بتعيين نقطة توقف (وهي ببساطة علامة تستخدم لإيقاف التطبيق). يتم عرض معلومات نقطة التوقف على الشاشة:

(da8.b44): استثناء تعليمات الكسر - الكود 80000003 (الفرصة الأولى)

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

السجلات

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

بعد الاتصال بـ calc.exe، يعرض WinDBG تلقائيًا معلومات حول السجلات التالية:

eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

يمكنك تكرار هذه المعلومات مرة أخرى لاحقًا باستخدام الأمر r:

0:005>ص
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
NTDLL!DbgBreakPoint:
77663540 سي سي إنت 3

إذا أردنا الحصول على قيمة سجل معين، يمكننا تشغيل الأمر التالي:

0:005> ص
eax=7ffd9000

يمكن الحصول على المعلومات في وقت واحد من عدة سجلات على النحو التالي:

0:005> r eax,ebp
eax=7ffd9000 ebp=02affdc8

مؤشر للتعليمات

الأمر الأخير يتعلق بتعليمات التشغيل. هنا يتم أيضًا عرض المعلومات على الشاشة، كما في حالة الأمر r، حول ما يحتويه سجل EIP. EIP هو سجل يحتوي على موقع التعليمات التالية التي سيتم تنفيذها بواسطة المعالج. ما يعرضه WinDBG هو ما يعادل الأمر u eip L1، وبعد ذلك ينتقل WinDBG إلى العنوان المحدد في سجل EIP، ويحول هذا القسم إلى رمز التجميع ويعرضه على الشاشة.

NTDLL!DbgBreakPoint:
77663540 سي سي إنت 3

ابق على تواصل

في المقالات المستقبلية، سننظر في كيفية استخدام WinDBG في الميدان: نقاط التوقف، وتصحيح الأخطاء خطوة بخطوة، وتصفح الذاكرة. لا تبديل! ج.

أدوات التصحيح لنظام التشغيل Windows- أدوات تصحيح أخطاء كود التشغيل أنظمة ويندوز. إنها مجموعة من البرامج الموزعة مجانًا من Microsoft والمصممة لتصحيح أخطاء وضع المستخدم ورمز وضع kernel: التطبيقات وبرامج التشغيل والخدمات ووحدات kernel. تشتمل مجموعة الأدوات على مصححات أخطاء وضع وحدة التحكم وواجهة المستخدم الرسومية، وأدوات مساعدة للعمل مع الرموز والملفات والعمليات والأدوات المساعدة لتصحيح الأخطاء عن بُعد. تحتوي مجموعة الأدوات على أدوات مساعدة يمكن استخدامها للعثور على أسباب الفشل في مكونات النظام المختلفة. أدوات التصحيح لنظام التشغيل Windowsمن نقطة معينة فصاعدًا، لا تكون متاحة للتنزيل في شكل توزيع مستقل وتشكل جزءًا من Windows SDK (مجموعة تطوير برامج Windows). مجموعة من الآلات أدوات ويندوزيتوفر SDK بدوره كجزء من برنامج اشتراك MSDN أو يمكن تنزيله مجانًا كتوزيع منفصل من msdn.microsoft.com. وفقا للمطورين، الأحدث والأكثر النسخة الحاليةأدوات تصحيح الأخطاء لنظام التشغيل Windows موجودة بشكل خاص في Windows SDK.

يتم تحديث أدوات تصحيح الأخطاء لنظام التشغيل Windows وإتاحتها للجمهور في كثير من الأحيان ولا تعتمد هذه العملية بأي شكل من الأشكال على إصدار أنظمة التشغيل. لذلك، تحقق بشكل دوري من وجود إصدارات جديدة.

دعونا الآن نرى ما هي أدوات التصحيح على وجه الخصوص مايكروسوفت ويندوز:

  • تصحيح أخطاء التطبيقات والخدمات وبرامج التشغيل والنواة المحلية؛
  • تصحيح أخطاء التطبيقات والخدمات وبرامج التشغيل والنواة عن بعد عبر الشبكة؛
  • تصحيح أخطاء التطبيقات قيد التشغيل في الوقت الفعلي؛
  • تحليل ملفات تفريغ الذاكرة الخاصة بالتطبيقات والنواة والنظام ككل؛
  • العمل مع الأنظمة المستندة إلى معماريات x86/x64/Itanium؛
  • تصحيح أخطاء وضع المستخدم وبرامج وضع kernel؛

تتوفر الإصدارات التالية من أدوات تصحيح الأخطاء لنظام التشغيل Windows: 32 بت x86، Intel Itanium، 64 بت x64. سنحتاج إلى اثنين منهم: x86 أو x64.

هناك عدة طرق لتثبيت أدوات التصحيح لنظام التشغيل Windows، في هذه المقالة سننظر في الطرق الرئيسية فقط:

  • التثبيت عبر مثبت الويب.
  • تثبيت أدوات التصحيح لنظام التشغيل Windows من ISO صورة ويندوز SDK.
  • تثبيت أدوات التصحيح لنظام التشغيل Windows مباشرةً من حزم dbg_amd64.msi / dbg_x86.msi.

لا يزال من غير الواضح عند أي نقطة، لماذا يجب علي تثبيت أدوات تصحيح الأخطاء على جهاز الكمبيوتر الخاص بي؟ غالبًا ما تواجه موقفًا يكون فيه التدخل في بيئة العمل أمرًا غير مرغوب فيه للغاية! والأكثر من ذلك، قد يكون تثبيت منتج جديد، أي إجراء تغييرات على ملفات التسجيل/النظام، أمرًا غير مقبول على الإطلاق. تتضمن الأمثلة خوادم المهام الحرجة. لماذا لا يفكر المطورون في خيار الإصدارات المحمولة من التطبيقات التي لا تتطلب التثبيت؟
من إصدار إلى آخر، تخضع عملية تثبيت حزمة Debugging Tools for Windows لبعض التغييرات. لننتقل الآن مباشرة إلى عملية التثبيت وننظر إلى الطرق التي يمكنك من خلالها تثبيت مجموعة الأدوات.

تثبيت أدوات التصحيح لنظام التشغيل Windows باستخدام مثبت الويب

انتقل إلى صفحة أرشيف Windows SDK وابحث عن قسم يسمى Windows 10 وأسفل العنصر "Windows 10 SDK (10586) ومحاكي الجهاز مع Windows 10 Mobile (Microsoft) (الإصدار 10586.11)".

انقر على هذا البند تثبيت SDK. بعد النقر، قم بتنزيل الملف sdksetup.exe وتشغيله، والذي يبدأ عملية التثبيت عبر الإنترنت لـ Windows SDK. في المرحلة الأولية، سيتحقق المثبت مما إذا كانت حزمة .NET Framework مثبتة على النظام احدث اصدار(الخامس هذه اللحظةهذا 4.5). إذا كانت الحزمة مفقودة، فسيتم عرض التثبيت وسيتم إعادة تشغيل المحطة عند الانتهاء. مباشرة بعد إعادة التشغيل، في مرحلة ترخيص المستخدم، تبدأ عملية تثبيت Windows SDK نفسها.

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

بعد اكتمال تثبيت أدوات التصحيح لنظام التشغيل Windows، يتم تحديد موقع ملفات التصحيح متى هذه الطريقةالتثبيت لدينا سيكون على النحو التالي:

  • إصدارات 64 بت: C:\ملفات البرنامج (x86)\Windows Kits\x.x\Debuggers\x64
  • إصدارات 32 بت: C:\ملفات البرنامج (x86)\Windows Kits\x.x\Debuggers\x86

* حيث x.x هو إصدار محدد من مجموعة التطوير؛
لاحظنا أن مسارات التثبيت للإصدار 8 والإصدارات الأحدث تختلف بشكل ملحوظ عن المسارات الكلاسيكية بالنسبة للجميع الإصدارات السابقةأدوات التصحيح؟

إضافة ضخمة هذه الطريقةيتضمن تثبيت أدوات تصحيح الأخطاء لنظام التشغيل Windows تثبيت إصدارات من أدوات تصحيح الأخطاء لجميع البنيات مرة واحدة.

تثبيت أدوات التصحيح لنظام التشغيل Windows من Windows SDK ISO

تتضمن هذه الطريقة تثبيت أدوات تصحيح الأخطاء لنظام التشغيل Windows باستخدام صورة تثبيت Windows SDK (مجموعة مطوري البرامج) الكاملة. حتى وقت معين، تحميل صورة ايزوبالنسبة للنظام المقابل، كان من الممكن على صفحة أرشيف Windows SDK. ومع ذلك، في الوقت الحالي، يمكنك الحصول على صورة ISO لـ SDK عن طريق تشغيل مثبت الويب sdksetup.exe وتحديد قم بتنزيل مجموعة أدوات تطوير برامج Windowsفي نافذة بدء التثبيت:

كما اكتشفنا، فإن طريقة التثبيت السابقة باستخدام مثبت الويب متقلبة للغاية وغالبًا ما تنتهي بالخطأ. في الأنظمة النظيفة، يتم تثبيته دون مشاكل، ولكن في الأنظمة المحملة بشكل كافٍ تنشأ مشاكل عديدة. إذا كانت هذه هي حالتك، فاستخدم هذه الطريقة.

وفقًا لذلك، تحتاج في الصفحة إلى تحديد التوزيع المطلوب، بالنسبة لي (وأعتقد أنه بالنسبة للكثيرين) في الوقت الحالي هو "Windows SDK for Windows 7 و .NET Framework 4" وانقر أدناه مباشرةً على الرابط "الحصول على ISO صورة قرص DVD ".

عند العمل مع موقع msdn.microsoft.com، أوصي باستخدام المتصفح متصفح الانترنت، حيث كانت هناك حالات من المنتجات المنافسة لا تعمل!

وبناء على ذلك، من الضروري الاختيار حسب الضرورة فقط. عادةً ما يتطابق عدد البت الخاص بـ Debugging Tools for Windows مع عدد البت الخاص بالنظام. أنظمتي في الغالب 64 بت، لذلك في معظم الحالات أقوم بتنزيل الصورة لنظام 64 بت GRMSDKX_EN_DVD.iso.
بعد ذلك، بعد تنزيل الصورة، نحتاج إلى العمل بطريقة أو بأخرى مع صورة ISO الموجودة. الطريقة التقليدية هي، بالطبع، نسخ قرص مضغوط، لكن هذه طريقة طويلة ومكلفة في بعض الأحيان. أقترح استخدام أدوات مساعدة مجانية لإنشاء أجهزة قرص افتراضية في النظام. أنا شخصياً أفضل استخدام DEAMON Tools Lite لهذا الغرض. قد يكون لدى شخص ما تفضيلات أخرى، أدوات مساعدة أكثر مباشرة أو خفيفة الوزن، حسب الذوق واللون، كما يقولون.. بعد تثبيت DAEMON Tools Lite، أقوم ببساطة بالنقر المزدوج على ملف الصورة GRMSDKX_EN_DVD.iso وسيظهر ملف افتراضي جديد في النظام القرص المضغوط:

ثم، بالنقر المزدوج، أقوم بتنشيط التحميل التلقائي وبدء تثبيت Windows SDK:

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


كل شيء على هذا النحو تمامًا، يوجد في لقطة الشاشة خياران محددان: "مجموعة أدوات أداء Windows" و"أدوات تصحيح الأخطاء لنظام التشغيل Windows". اختر كلاهما، لأن Windows Performance Toolkit سيكون بالتأكيد مفيدًا في عملك! وبعد ذلك، بعد النقر على زر "التالي"، يستمر التثبيت كالمعتاد. وفي النهاية سترى النقش "اكتمل التثبيت".
عند الانتهاء من التثبيت، ستكون أدلة العمل الخاصة بحزمة Debugging Tools for Windows كما يلي:

  • للإصدار x86:
  • للنسخة x64:

عند هذه النقطة، يمكن اعتبار تثبيت أدوات التصحيح لـ Windows مكتملاً.

تثبيت أدوات التصحيح لنظام التشغيل Windows عبر ملف .msi

إذا نشأت مشاكل عند تثبيت أدوات التصحيح لنظام التشغيل Windows باستخدام الطريقتين السابقتين، فلا يزال لدينا طريقة أخرى في المخزون، وهي الأكثر موثوقية وتم اختبارها عبر الزمن، والتي جاءت للإنقاذ، إذا جاز التعبير، أكثر من مرة. ذات مرة، قبل التكامل في Windows SDK، كانت أدوات تصحيح الأخطاء لنظام التشغيل Windows متاحة كمثبت منفصل.msi، والذي لا يزال من الممكن العثور عليه، ولكن بالفعل في أحشاء توزيع Windows SDK. نظرًا لأن لدينا بالفعل صورة ISO لـ Windows SDK في أيدينا، فلا يمكننا تثبيتها في النظام، ولكن ببساطة فتحها باستخدام أرشيف WinRAR المعروف بالفعل، أو أي منتج آخر يعمل مع محتويات أقراص ISO.

بعد فتح الصورة، نحتاج إلى الانتقال إلى دليل "الإعداد" الموجود في الجذر ثم تحديد أحد الأدلة:

  • لتثبيت الإصدار 64 بت: \Setup\WinSDKDebuggingTools_amd64وقم بفك ضغط الملف dbg_amd64.msi من هذا الدليل.
  • لتثبيت الإصدار 32 بت: \Setup\WinSDKDebuggingTools وفك ضغط ملف dbg_x86.msi من هذا الدليل.

عند الانتهاء من التثبيت، ستكون أدلة العمل الخاصة بحزمة Debugging Tools for Windows كما يلي:

  • للإصدار x86: C:\ملفات البرنامج (x86)\أدوات التصحيح لنظام التشغيل Windows (x86)
  • للنسخة x64: C:\Program Files\Debugging Tools لنظام التشغيل Windows (x64)

عند هذه النقطة، يمكن اعتبار تثبيت أدوات التصحيح لـ Windows مكتملاً.

معلومات إضافية

لا أعرف ما الذي يرتبط به هذا، ربما بسبب إهمالي، ولكن بعد تثبيت أدوات تصحيح الأخطاء لنظام التشغيل Windows، لا يقوم المثبت بتعيين المسار إلى الدليل باستخدام مصحح الأخطاء في المسار المتغير لمسار النظام. وهذا يفرض قيودًا معينة على تشغيل مهام تصحيح الأخطاء المختلفة مباشرةً من وحدة التحكم. لذلك، إذا لم يكن هناك مسار، فأنا أكتب بشكل مستقل في النافذة متغيرات البيئة المسار إلى أدوات التصحيح:

  • C:\ملفات البرنامج (x86)\Windows Kits\10\Debuggers\x86
  • C:\ملفات البرنامج (x86)\Windows Kits\10\Debuggers\x64

* في حالتك، قد تختلف المسارات بسبب استخدام نظام تشغيل بحجم بت مختلف وبسبب استخدام إصدار SDK مختلف.

يمكن أن تعمل الأدوات المساعدة لحزمة Debugging Tools for Windows كتطبيقات محمولة، ما عليك سوى نسخ الدليل من نظام العمل مجموعة أدوات أداء مايكروسوفت ويندوزواستخدامها كنسخة محمولة على خادم الإنتاج. ولكن لا تنسى أن تأخذ في الاعتبار قدرة النظام !! حتى إذا كنت قد أكملت التثبيت الكامل للحزمة على نظام مهم، فيمكنك بدء العمل مباشرة بعد التثبيت، ولا يلزم إعادة التشغيل.

تكوين أدوات التصحيح لنظام التشغيل Windows

والآن، أخيرًا، إليك تكوين أدوات تصحيح الأخطاء لنظام التشغيل Windows:

ملف غاية
adplus.doc وثائق الأداة المساعدة ADPlus.
adplus.exe تطبيق وحدة تحكم يقوم بأتمتة عمل مصحح أخطاء cdb لإنشاء عمليات تفريغ وملفات تسجيل لعملية واحدة أو أكثر.
agestore.exe أداة مساعدة لإزالة الملفات القديمة من وحدة التخزين التي يستخدمها خادم الرموز أو الخادم المصدر.
Breakin.exe أداة مساعدة تسمح لك بإرسال مجموعة فواصل مخصصة للعمليات، على غرار الضغط على CTRL+C.
cdb.exe مصحح أخطاء وحدة التحكم في وضع المستخدم.
تحويلstore.exe أداة لتحويل الرموز من 2-tier إلى 3-tier.
dbengprx.exe مكرر (خادم وكيل) لتصحيح الأخطاء عن بعد.
dbgrpc.exe أداة مساعدة لعرض معلومات حالة استدعاء RPC.
dbgsrv.exe عملية الخادم المستخدمة لتصحيح الأخطاء عن بعد.
dbh.exe أداة مساعدة لعرض معلومات حول محتويات ملف الرمز.
dumpchk.exe فائدة فحص التفريغ. أداة لفحص ملف التفريغ بسرعة.
dumpexam.exe أداة لتحليل تفريغ الذاكرة. والنتيجة هي الإخراج إلى %SystemRoot%\MEMORY.TXT .
gflags.exe محرر أعلام النظام العالمي. تدير الأداة المساعدة مفاتيح التسجيل والإعدادات الأخرى.
i386kd.exe غلاف للدينار الكويتي. هل كان هذا هو ما كان يسمى kd في السابق للأنظمة التي تعتمد على Windows NT/2000 لأجهزة x86؟ ربما غادر لأسباب التوافق.
ia64kd.exe غلاف للدينار الكويتي. هل كان يُطلق عليه ذات مرة اسم kd للأنظمة التي تعتمد على نظام التشغيل Windows NT/2000 لأجهزة ia64؟ ربما غادر لأسباب التوافق.
kd.exe مصحح أخطاء وحدة التحكم في وضع Kernel.
kdbgctrl.exe أداة إدارة تصحيح أخطاء Kernel. أداة مساعدة لإدارة وتكوين اتصال تصحيح أخطاء kernel.
kdsrv.exe خادم الاتصال بالدينار الكويتي. الأداة المساعدة عبارة عن تطبيق صغير يعمل وينتظر الاتصالات عن بعد. يعمل kd على العميل ويتصل بهذا الخادم لتصحيح الأخطاء عن بعد. يجب أن يكون كل من الخادم والعميل من نفس مجموعة أدوات التصحيح.
kill.exe أداة لإنهاء العمليات.
list.exe أداة لعرض محتويات الملف على الشاشة. تم تضمين هذه الأداة المصغرة لغرض واحد - وهو عرض النصوص الكبيرة أو ملفات السجل. يستغرق مساحة صغيرة من الذاكرة لأنه يقوم بتحميل النص في أجزاء.
logger.exe مصحح أخطاء مصغر يمكنه العمل مع عملية واحدة فقط. تقوم الأداة بإدخال logexts.dll في مساحة العملية، التي تسجل جميع استدعاءات الوظائف والإجراءات الأخرى للبرنامج قيد الدراسة.
logviewer.exe أداة مساعدة لعرض السجلات المسجلة بواسطة مصحح الأخطاء logger.exe.
ntsd.exe مصحح الأخطاء الرمزي لـ Microsoft NT (NTSD). مصحح أخطاء مماثل لـ cdb باستثناء أنه يقوم بإنشاء نافذة نصية عند تشغيله. مثل cdb، فإن ntsd قادر على تصحيح أخطاء كل من تطبيقات وحدة التحكم والتطبيقات الرسومية.
pdbcopy.exe أداة مساعدة لإزالة الرموز الخاصة من ملف الرموز، والتحكم في الرموز العامة المضمنة في ملف الرموز.
Remote.exe أداة مساعدة لتصحيح الأخطاء عن بعد والتحكم عن بعد في أي مصحح أخطاء لوحدة التحكم KD وCDB وNTSD. يسمح لك بتشغيل كافة مصححات أخطاء وحدة التحكم عن بعد.
rtlist.exe عارض المهام عن بعد يتم استخدام الأداة المساعدة لعرض قائمة بالعمليات الجارية من خلال عملية خادم DbgSrv.
Symchk.exe أداة مساعدة لتنزيل الرموز من خادم رموز Microsoft وإنشاء ذاكرة تخزين مؤقت للرموز المحلية.
Symstore.exe أداة مساعدة لإنشاء شبكة أو تخزين رمز محلي (طبقتان/ثلاث طبقات). تخزين الرموز هو دليل متخصص على القرص، تم إنشاؤه وفقًا لبنية محددة ويحتوي على رموز. يتم إنشاء بنية المجلدات الفرعية ذات الأسماء المطابقة لأسماء المكونات في الدليل الجذر للرموز. بدوره، يحتوي كل من هذه المجلدات الفرعية على مجلدات فرعية متداخلة لها أسماء خاصة يتم الحصول عليها عن طريق تجزئة الملفات الثنائية. تقوم الأداة المساعدة Symstore بفحص مجلدات المكونات وإضافة مكونات جديدة إلى مخزن الرموز، حيث يمكن لأي عميل استردادها. يُقال أن Symstore يُستخدم لتلقي الرموز من وحدة تخزين ذات طبقة 0 ووضعها في وحدة تخزين ذات مستويين/ثلاث طبقات.
tlist.exe عارض المهام أداة مساعدة لعرض قائمة بجميع العمليات الجارية.
umdh.exe الأداة المساعدة لتفريغ وضع المستخدم. أداة مساعدة لتحليل أكوام العملية المحددة. يسمح لك بعرض معلمات مختلفة للكومة.
usbview.exe عارض يو اس بي. أداة مساعدة لعرض أجهزة USB المتصلة بجهاز الكمبيوتر.
vmdemux.exe جهاز تعدد الإرسال للآلة الافتراضية. يقوم بإنشاء عدة أنابيب مسماة لاتصال COM واحد. يتم استخدام القنوات لتصحيح مكونات الجهاز الظاهري المختلفة
Windbg.exe وضع المستخدم ومصحح أخطاء وضع kernel مع واجهة المستخدم الرسومية.

للتعرف على الأسباب شاشات زرقاء(BSOD) مطلوب تحليل تفريغ الذاكرة. في الغالبية العظمى من الحالات، يكون التفريغ المصغر، الذي يتم إنشاؤه بواسطة النظام في حالة حدوث أخطاء فادحة، كافيًا.
تحتوي هذه المقالة تعليمات خطوة بخطوةعند تثبيت وتكوين WinDBG - أداة تصحيح أخطاء قوية تسمح لك بتحديد السبب الحقيقي لمرض الموت الزرقاء.

الخطوة 1 – تكوين عمليات تفريغ الذاكرة الصغيرة

الخطوة 2 – تثبيت WinDBG

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

  • Windows 10 SDK (تنزيل مثبت الشبكة)
  • Windows 8.1 SDK (تنزيل مثبت الشبكة)

الخطوة 3 - تعيين ملفات .dmp إلى WinDBG

لتسهيل قراءة وتحليل تفريغ الذاكرة، قم بتعيين ملفات .dmp إلى WinDBG. سيسمح لك هذا بفتح ملفات التفريغ من Explorer مباشرةً في WinDBG دون تشغيله أولاً.


الخطوة 4 - إعداد خادم الرموز لتلقي ملفات رموز التصحيح


اكتمل التثبيت والتكوين الأولي لـ WinDBG. من أجل تغيير مظهره، يمكنك الذهاب إلى القائمة منظر- ستجد إعدادات الخط عن طريق التحديد الخط، وإعدادات نافذة وحدة التحكم في خيارات.




قمة