اگر به اصطلاح دارید صفحه آبیمرگ در ویندوز 10 و آماده افتادن به کمای عصبی هستید، خود را جمع کنید و سعی کنید مشکل را حل کنید. برای شروع، شایان ذکر است که این پیام شوم به شما در مورد یک انتقاد هشدار می دهد خطای سیستم. علاوه بر این، زمانی که ویندوز در صفحه آبی مرگ قرار می‌گیرد و دستگاه راه‌اندازی مجدد می‌شود، نمی‌توان لحظه‌ای را دریافت کرد و زمان لازم برای خواندن کد خطا را داشت. ما بلافاصله توجه می کنیم که وجود دارد مقدار زیادیراه حل هایی برای این مشکل و همچنین دلایل صفحه آبی. در این مقاله سعی می کنیم در نظر بگیریم علل احتمالیظاهر یک صفحه آبی از شادی، و همچنین در مورد راه حل های امکان پذیرچالش ها و مسائل.

در اکثریت قریب به اتفاق موارد، صفحه آبی مرگ سیگنال خطای BAD_POOL_CALLER - stop 0x000000c2 را می دهد. صراحتاً تشخیص این خطا دشوار است، اما ممکن است سعی کنیم الگوریتم اقدامات بعدی شما را با استفاده از مثال این خطا شرح دهیم.

برای تشخیص صحیح یک مشکل، ابتدا باید آنالیز کنید فایل ویژهسیستمی به نام minidump (حافظه خالی). ایجاد چنین فایل هایی منجر به شکست در سیستم می شود، علاوه بر این، آنها می توانند به ما اطلاع دهند - دقیقاً چه چیزی منجر به شکست شده است.

1. برای فعال کردن چنین ضبط خودکار یک کمپرس حافظه کوچک (به طور پیش فرض غیرفعال شده است)، به خصوصیات رایانه بروید و به بخش بروید " گزینه های اضافی Systems" (این شامل برای همه سیستم ها، نه فقط ویندوز 10 ارائه شده است):

به عنوان یک قاعده، تمام فایل های minidump زمانی که صفحه آبی مرگ (BSOD) رخ می دهد، ذخیره می شوند و می توانید آنها را در پوشه C:\Windows\Minidump پیدا کنید. قابل ذکر است که نام فایل شامل تاریخ فعلی- زمانی که ایجاد شد، که تشخیص تاریخ وقوع خطا را بسیار آسان تر می کند، به خصوص با توجه به اینکه ممکن است بیش از یک فایل از این قبیل وجود داشته باشد.

دو روش برای رمزگشایی minidump حافظه کوچک Dame

راه اول، استفاده از ابزار نسبتاً محبوب BlueScreenView است. این ابزار همچنین می تواند گزینه خوبی برای تجزیه و تحلیل یک حافظه خالی باشد. استفاده از این ابزار به عنوان راهی برای شناسایی یک راننده مشکل ساز مفید است.

علاوه بر این، به ویژه از این نظر قابل توجه است که می توان از آن برای مشاهده BSOD (صفحه آبی مرگ) به عنوان یک فریم ثابت استفاده کرد، همانطور که در زمان خراب شدن سیستم بود. زمان و تاریخ خرابی، جزئیات درایور یا ماژول را با نسخه و نمایش می دهد توضیح مختصر. علاوه بر این، این ابزار به زبان های زیادی از جمله روسی در دسترس است. بنابراین، ابزار BlueScreenView تنها چیزی است که شما نیاز به تجزیه و تحلیل سریع تخلیه حافظه در طول BSOD دارید.

برای روش دومشما باید Debugging Tools را برای ویندوز نصب کنید و همچنین ابزار bsdos_utility را دانلود کنید. علاوه بر این، پس از باز کردن اسکریپت bsdos_utility.cmd، باید آن را به درایو C:\ منتقل کنید (می توانید یک پوشه جداگانه ایجاد کنید، اما به یاد داشته باشید که رشته آدرس راه اندازی اسکریپت با مثال ما متفاوت است). سپس در خط فرمان بنویسید:

C:\bsdos_utility.cmd

پس از نمایش لیست همه dump ها از لیست C:\Windows\Minidump\، پس از آن اسکریپت می پرسد که کدام dump باید تجزیه و تحلیل شود. همچنین می‌توانید هنگام اجرای اسکریپت، minidump مورد نظر را انتخاب کنید:

به این ترتیب امکان تشخیص جرم وجود دارد خطاهای ویندوز 10 که باعث BSOD شد و همچنین برنامه های exe مشکل ساز که باعث صفحه آبی شد.

در مرحله بعدی انتخاب اجزای نصب ( ویژگی هایی را که می خواهید نصب کنید انتخاب کنید) فقط آنچه را که نیاز داریم علامت گذاری کنید - ابزارهای اشکال زدایی برای ویندوز و فشار دهید نصب

مجموعه ای از ابزارهای کمکی از اینترنت در پوشه مشخص شده در صفحه اول دانلود و نصب می شود.

پس از اتمام نصب، در منوی "شروع" یا در صفحه شروع در گروه میانبرها پیدا می کنیم. کیت های ویندوزسودمندی windbgو با حقوق مدیر اجرا کنید

اگر به دلایلی میانبر پیدا نشد، می توانید فایل اجرایی را از دایرکتوری نصب اجرا کنید - C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\windbg.exe

در منوی اصلی برنامه windbgموارد را انتخاب کنید فایل > مسیر فایل نماد. در پنجره ای که باز می شود، یک خط تعیین کننده let را به فهرست محلی حافظه پنهان نماد و منبع آنلاین آن وارد کنید:

SRV*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

ما تنظیمات را با انتخاب موارد در منوی اصلی ذخیره می کنیم فایل > فضای کاری را ذخیره کنید

فایل تخلیه حافظه را با انتخاب از منو باز کنید فایل > Crash Dump را باز کنید...

یک فایل را انتخاب کنید MEMORY.DMP(به طور پیش فرض در دایرکتوری C:\Windows قرار دارد) و کلیک کنید باز کن

اطلاعاتی در مورد اینکه کدام ماژول اجرایی خاص باعث توقف کار سیستم شده است ظاهر می شود. با کلیک بر روی یک لینک !analyze-vمی توانید اطلاعات دقیق تری در مورد وضعیت سیستم در زمان خطای توقف دریافت کنید.

همین اطلاعات را می توان با استفاده از خط فرمان تقریباً با دنباله دستورات زیر به دست آورد:

cd /d" C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\" kd -z "D:\DOWNLOADS\VM05\MEMORY.DMP " .logopen C:\Debuglog.txt .sympath srv*C:\Windows\symbol_cache*http://msdl.microsoft.com/download/symbols

در این مثال، تمام اطلاعات تجزیه و تحلیل dump به شکل قابل خواندن در فایل C:\Debuglog.txt ریخته می شود.

منبع اطلاعات:

ظهر بخیر، همکاران و خوانندگان محترم سایت وبلاگ. امروز می خواهم به شما بگویم که چگونه یک حافظه رد استون ویندوز 10 را تجزیه و تحلیل کنید. این کار در اکثر موارد زمانی انجام می شود که صفحه آبی مرگ را با خطا دریافت می کنید و پس از آن رایانه شما دوباره راه اندازی می شود. و این تحلیلبه درک علت شکست کمک می کند.

راه اندازی حافظه خالی ویندوز 10

و بنابراین، تخلیه حافظه در سیستم عامل Windows 10 Redstone چیست. در بالا برای شما توضیح دادم علت مشترککه در آن یک تخلیه حافظه سیستم ظاهر می شود و اینها صفحه آبی مرگ هستند. دلایل ظاهر آنها بسیار گسترده است:

این فقط یک لیست کلی کوچک است، از آنجایی که تعداد زیادی کد خطا از صفحات آبی وجود دارد، من جدیدترین آنها را ارائه خواهم کرد.

وظیفه ما این است که بتوانیم این فایل ها را برای تشخیص پیدا کنیم و بتوانیم آنها را تفسیر کنیم تا اطلاعاتی در مورد مشکل به دست آوریم.

Windows 10 crash dump کجا پیکربندی شده است؟

برای شروع، بیایید بفهمیم که این تنظیمات در کجا ساخته شده است، که مسئول حذف حافظه خراب ویندوز 10 است. روی دکمه شروع ویندوز 10 کلیک راست کرده و از منوی زمینه System را انتخاب کنید.

در پنجره System که باز می شود، در سمت چپ قرار دارید گوشه بالاییتنظیمات پیشرفته سیستم را انتخاب کنید.

اینجا جایی است که حافظه خالی ویندوز 10 پیکربندی می شود. روی مورد تنظیمات در Boot and Recovery کلیک کنید.

از تنظیمات، حذف حافظه ویندوز 10، می خواهم به موارد زیر توجه کنم:

  • ضبط یک رویداد در syslog> در اینجا اطلاعات مربوط به صفحه آبی به گزارش ها اضافه می شود سیستم عامل.
  • اجرا کن راه اندازی مجدد خودکار> برای ادامه پس از یک خطا
  • اطلاعات اشکال‌زدایی را بنویسید > به شما امکان می‌دهد نوع فایل dump را انتخاب کنید، بیشتر در مورد آن در زیر.
  • فایل dump موجود را جایگزین کنید، یک چک باکس مفید، از آنجایی که این dump ها می توانند ده ها گیگابایت وزن داشته باشند، برای درایوهای ssd کوچک بسیار حیاتی است.

انواع تخلیه حافظه

بیایید ببینیم که چگونه گزینه های ضبط اطلاعات اشکال زدایی متفاوت است.

  • حافظه کم حجم 256 کیلوبایت: فایل های کوچک حافظه حاوی اطلاعات زیر هستند:

- پیام خطای کشنده، پارامترهای آن و سایر داده ها؛

- لیست درایورهای بارگذاری شده؛

- زمینه پردازنده ( PRCB) که در آن شکست رخ داده است.

EPROCESS) برای فرآیندی که باعث خطا شد؛

- پردازش اطلاعات و زمینه هسته ( ETHREAD) برای رشته ای که باعث خطا شده است.

– پشته فراخوانی حالت هسته برای رشته ای که باعث خطا شده است.

زمانی استفاده می شود که شما خیلی کم دارید فضای دیسکروی شما دیسک محلی. اینطوری اهدا می کنیم اطلاعات مفید، که ممکن است برای تشخیص صفحه آبی کافی نباشد.

minidump در مسیر C:\Windows\Minidump ذخیره می شود

  • حذف حافظه هسته > فقط حافظه هسته را ضبط می کند. بسته به میزان حافظه فیزیکی رایانه شخصی در این مورد، فایل پیجینگ از 50 تا 800 نیاز دارد. MBیا یک سوم حافظه فیزیکی کامپیوتر روی ولوم بوت.
  • تخلیه کامل حافظه > خوب، همه چیز از نام مشخص است. کاملاً همه چیز را می نویسد، این حداکثر اطلاعات در مورد صفحه آبی است، صد در صد تشخیص مشکل را می دهد.

در مسیر C:\Windows\Memory.dmp قرار دارد

  • Active memory dump > حافظه فعال ماشین میزبان به اینجا می رسد، این یک عملکرد بیشتر برای پلتفرم های سرور است، زیرا می توان از آنها برای مجازی سازی استفاده کرد و برای اینکه اطلاعات مربوط به ماشین های مجازی وارد dump نشود، این گزینه اختراع شد.

هدف این یادداشت کوتاه نشان دادن نحوه پیکربندی سیستم به منظور در اختیار گرفتن شرایط اضطراری است زباله حافظه ویندوز ، یعنی تخلیه ای که می تواند در صورت خرابی بحرانی ایجاد شود که با ظاهر صفحه آبی مرگ (BSOD) مشخص می شود. دامپ به طور کلی چیست، چرا به آن نیاز داریم و چیست، برای حل چه مشکلاتی طراحی شده است و حاوی چه اطلاعاتی است؟

یک حافظه خالی محتویات حافظه کاری یک فرآیند، هسته یا کل سیستم عامل است، از جمله، علاوه بر مناطق کاری، اطلاعات تکمیلیدر مورد وضعیت رجیسترهای پردازنده، محتویات پشته و سایر ساختارهای سرویس.

چرا ما به این محتوا نیاز داریم، i.e. تخلیه حافظه ویندوز? شاید رایج ترین حافظه خالی برای بررسی علل خرابی سیستم () که باعث توقف کامل سیستم عامل شد، استفاده شود. علاوه بر این، می توان از حالت حافظه برای اهداف دیگری نیز استفاده کرد. همچنین این واقعیت مهم است که تخلیه حافظه به معنای واقعی کلمه تنها راه برای به دست آوردن اطلاعات در مورد هر گونه خرابی است! و حذف (دریافت) حافظه خالی سیستم در واقع تنها روش دقیق برای به دست آوردن پرینت (کپی) فوری از محتویات حافظه فیزیکی سیستم است.

هرچه محتویات دامپ با دقت بیشتری وضعیت حافظه را در زمان خرابی منعکس کند، ما قادر خواهیم بود وضعیت اضطراری را تجزیه و تحلیل کنیم. بنابراین، بسیار مهم است که دقیقاً نسخه فعلی حافظه فیزیکی سیستم را به طور دقیق دریافت کنید لحظه معینزمان بلافاصله قبل از سقوط و تنها راه برای انجام این کار ایجاد یک خرابی کامل است. دلیل آن کاملاً پیش پا افتاده است - هنگامی که یک خرابی حافظه سیستم رخ می دهد، چه در نتیجه خرابی یا در نتیجه یک موقعیت شبیه سازی مصنوعی، سیستم در این لحظه از دریافت کنترل عملکردهای اضطراری (KeBugCheckEx) در یک حالت کاملاً بدون تغییر (ایستا)، بنابراین، بین لحظه‌ای که خرابی رخ می‌دهد و زمانی که داده‌ها روی رسانه نوشته می‌شوند، هیچ چیزی محتوای حافظه فیزیکی را تغییر نمی‌دهد و در حالت اولیه روی دیسک نوشته می‌شود. خوب، این در تئوری است، اما گاهی اوقات در زندگی، اما شرایطی وجود دارد که به دلیل قطعات سخت افزاری معیوب، ممکن است خود تخلیه حافظه آسیب ببیند، یا ممکن است ایستگاه در طول فرآیند ضبط Dump منجمد شود.

در اکثریت قریب به اتفاق موارد، از لحظه ای که فرآیند ایجاد خرابی حافظه شروع می شود، تا لحظه ای که محتویات حافظه روی دیسک نوشته می شود، اطلاعات موجود در حافظه بدون تغییر باقی می مانند.

از نظر تئوری، ایستا (تغییر ناپذیری) "ردپای" حافظه با این واقعیت توضیح داده می شود که وقتی تابع KeBugCheckEx فراخوانی می شود، که اطلاعات مربوط به خرابی را نمایش می دهد و فرآیند ایجاد یک حافظه خالی را شروع می کند، سیستم از قبل به طور کامل متوقف شده است و محتویات حافظه فیزیکی بر روی بلوک های اشغال شده روی دیسک توسط فایل صفحه بندی نوشته می شود، پس از آن، در حین راه اندازی بعدی سیستم عامل، به فایلی در رسانه سیستم ریخته می شود. خوب، تقریباً یک بار وضعیتی را مشاهده کردم که یک شکست مادربرداز ذخیره شدن حافظه خالی جلوگیری کرد: الف) منجمد کردن منطق ذخیره dump در حین کار (فرایند به 100٪ نرسید)، ب) خراب کردن فایل تخلیه حافظه (ساختارهای نفرین شده اشکال زدا)، ج) نوشتن فایل های dump memory.dmp طول صفر بنابراین، با وجود این واقعیت که سیستم در زمان ایجاد تخلیه حافظه کاملاً متوقف شده بود و فقط کد اضطراری کار می کند، سخت افزار معیوب می تواند بدون استثنا در هر مرحله از عملیات تنظیمات خود را برای هر منطقی انجام دهد.
به طور سنتی، در مرحله اولیه، برای ذخیره یک تخلیه حافظه ویندوز، از بلوک های دیسک اختصاص داده شده به فایل صفحه بندی (pagefile) استفاده می شود. سپس، پس از رخ دادن صفحه آبی و راه اندازی مجدد، داده ها به یک فایل جداگانه منتقل می شوند و سپس فایل بر اساس الگوی بسته به نوع dump تغییر نام می دهد. با این حال، با شروع از نسخه های ویندوزویستا، این وضعیت را می توان تغییر داد، اکنون به کاربر این فرصت داده می شود که یک Dump اختصاصی را بدون دخالت فایل swap ذخیره کند و اطلاعات مربوط به خرابی را در یک فایل موقت قرار دهد. این به منظور از بین بردن خطاهای پیکربندی مرتبط با تنظیمات نادرست برای اندازه و موقعیت فایل صفحه بندی انجام شد که اغلب منجر به مشکلاتی در فرآیند ذخیره سازی حافظه خالی می شد.
بیایید ببینیم که سیستم عامل ویندوز به ما اجازه می دهد چه نوع Dump هایی ایجاد کنیم:

  • تخلیه حافظه پردازش (برنامه)؛
  • تخلیه حافظه هسته;
  • تخلیه کامل حافظه (تخلیه قسمت موجود از حافظه فیزیکی سیستم).

تمام خرابی ها را می توان به دو دسته اصلی تقسیم کرد:

  • خرابی‌ها با اطلاعاتی درباره استثنای پرتاب شده. معمولا در ایجاد می شود حالت خودکار، هنگامی که یک استثنا کنترل نشده در برنامه / هسته رخ می دهد و بر این اساس، می توان دیباگر سیستم (ساخت شده) را فراخوانی کرد. در این حالت، اطلاعات مربوط به استثنا در Dump نوشته می شود، که تعیین نوع استثنا و محل وقوع را در تجزیه و تحلیل بعدی آسان می کند.
  • خرابی بدون اطلاعات استثنایی. معمولاً توسط کاربر به صورت دستی ایجاد می شود، زمانی که لازم است فقط یک عکس فوری از فرآیند برای تجزیه و تحلیل بعدی ایجاد شود. این تجزیه و تحلیل به معنای تعیین نوع استثنا نیست، زیرا هیچ استثنایی رخ نداده است، بلکه تجزیه و تحلیلی از نوع کاملاً متفاوت است، به عنوان مثال، مطالعه ساختارهای داده فرآیند و غیره.

پیکربندی تخلیه هسته

شما باید به عنوان یک مدیر وارد سیستم شوید حساببرای انجام مراحل این بخش.

بیایید مستقیماً به پیکربندی تنظیمات حذف خرابی ویندوز بپردازیم. ابتدا باید به یکی از روش های زیر به پنجره ویژگی های سیستم برویم:

  1. کلیک کلیک راستماوس را روی نماد "رایانه من" - "خواص" - "تنظیمات پیشرفته سیستم" - "پیشرفته" قرار دهید.
  2. دکمه "شروع" - "کنترل پنل" - "سیستم" - "تنظیمات پیشرفته سیستم" - "پیشرفته".
  3. میانبر صفحه کلید "Windows" + "Pause" - "Advanced system settings" - "Advanced".

  4. controlsystem.cpl,3
  5. در خط فرمان (cmd) اجرا کنید:
    SystemPropertiesAdvanced

نتیجه اقدامات شرح داده شده باز کردن پنجره "System Properties" و انتخاب تب "Advanced" است:

پس از آن، در بخش "دانلود و بازیابی"، کلیک می کنیم، "گزینه ها" را انتخاب می کنیم و به این ترتیب پنجره جدیدی به نام "دانلود و بازیابی" باز می کنیم:

همه تنظیمات خرابی در یک بلوک از تنظیمات به نام خرابی سیستم گروه بندی می شوند. در این بلوک می توانیم پارامترهای زیر را تنظیم کنیم:

  1. رویدادها را در گزارش سیستم بنویسید.
  2. راه اندازی مجدد خودکار را انجام دهید.
  3. ثبت اطلاعات اشکال زدایی
  4. فایل روگرفت.
  5. یک فایل dump موجود را جایگزین کنید.

همانطور که می بینید، بسیاری از پارامترهای لیست کاملاً پیش پا افتاده و به راحتی قابل درک هستند. با این حال، من می خواهم در مورد پارامتر "فایل Dump" با جزئیات بیشتر صحبت کنم. پارامتر به عنوان یک لیست کشویی ارائه می شود و دارای چهار مقدار ممکن است:

تخلیه حافظه کوچک

یک حافظه کوچک خالی (minidump) فایلی است که حاوی کمترین اطلاعات خرابی است. کوچکترین حافظه ممکن است. علیرغم معایب آشکار، اغلب Minidumps هستند که به عنوان اطلاعات خرابی برای انتقال به فروشنده راننده شخص ثالث برای مطالعه بیشتر استفاده می شوند.
ترکیب:

  • پیغام خطا.
  • مقدار خطا.
  • گزینه های خطا
  • زمینه پردازشگر (PRCB) که ناموفق بود.
  • اطلاعات فرآیند و زمینه هسته (EPROCESS) برای فرآیندی که باعث خرابی می شود، با تمام رشته های آن.
  • اطلاعات فرآیند و زمینه هسته (ETHREAD) برای رشته ای که باعث خرابی شده است.
  • پشته حالت هسته برای رشته ای که باعث خرابی شده است.
  • لیست درایورهای بارگذاری شده

محل اقامت: %SystemRoot%\Minidump\MMDDYY-XXXXXX-NN.dmp. جایی که MMDDYY - ماه، روز و سال به ترتیب، NN - شماره سریالزباله.
حجم: اندازه به بیتی سیستم عامل بستگی دارد: برای یک سیستم عامل 32 بیتی فقط 128 کیلوبایت و برای یک سیستم عامل 64 بیتی در فایل صفحه بندی (یا در فایل مشخص شده در DedicatedDumpFile) به 256 کیلوبایت نیاز است. از آنجایی که نمی توانیم چنین اندازه کوچکی را تنظیم کنیم، آن را تا 1 مگابایت گرد می کنیم.

تخلیه حافظه هسته

این نوع dump حاوی یک کپی از تمام حافظه هسته در زمان خرابی است.
ترکیب:

  • لیست فرآیندهای در حال اجرا
  • وضعیت موضوع فعلی.
  • صفحات حافظه در حالت هسته که در زمان خرابی در حافظه فیزیکی وجود دارند: حافظه درایور حالت هسته و حافظه برنامه در حالت هسته.
  • حافظه لایه سخت افزاری (HAL).
  • لیست درایورهای بارگذاری شده

حذف حافظه هسته صفحات حافظه تخصیص نیافته و صفحات حالت کاربر را ندارد. موافقم، بعید است که صفحات فرآیند حالت کاربر در هنگام خرابی سیستم (BugCheck) برای ما جالب باشد، زیرا معمولاً خرابی سیستم توسط کد حالت هسته آغاز می شود.

اندازه: بسته به اندازه فضای آدرس هسته، تخصیص سیستم عامل و تعداد درایورهای حالت هسته متفاوت است. به طور معمول، حدود یک سوم مقدار حافظه فیزیکی موجود در فایل swap (یا فایل مشخص شده توسط DedicatedDumpFile) مورد نیاز است. ممکن است متفاوت باشد.

تخلیه کامل حافظه

یک حافظه کامل حاوی یک کپی از تمام حافظه فیزیکی (RAM) در زمان خرابی است. بر این اساس، کل محتویات حافظه سیستم نیز وارد فایل می شود. این هم یک مزیت و هم یک ایراد بزرگ است، زیرا اندازه آن در برخی از سرورهای دارای مقدار زیادی رم می تواند قابل توجه باشد.
ترکیب:

  • تمام صفحات حافظه فیزیکی "مرئی". این عملاً کل حافظه سیستم است، به استثنای مناطق استفاده شده توسط سخت افزار: BIOS، فضای PCI و غیره.
  • پردازش داده هایی که در زمان خرابی روی سیستم در حال اجرا بودند.
  • صفحاتی از حافظه فیزیکی که به فضای آدرس مجازی نگاشت نشده اند، اما می توانند به بررسی علت خرابی کمک کنند.

تخلیه کامل حافظه به طور پیش فرض شامل مناطقی از حافظه فیزیکی مورد استفاده بایوس نمی شود.
مکان: %SystemRoot%\MEMORY.DMP. رونوشت قبلی بازنویسی شده است.
حجم: فایل پیجینگ (یا فایل مشخص شده در DedicatedDumpFile) به اندازه ای برابر با اندازه حافظه فیزیکی + 257 مگابایت نیاز دارد (این 257 مگابایت به نوعی از داده های هدر + درایور تقسیم می شود). در واقع، در برخی از سیستم عامل ها، آستانه پایین فایل صفحه بندی را می توان دقیقاً به مقدار اندازه حافظه فیزیکی تنظیم کرد.

تخلیه خودکار حافظه

شروع از ویندوز 8/ ویندوز سروردر سال 2012، یک نوع دامپ جدید به سیستم معرفی شده است به نام "Automatic Memory Dump" که به عنوان نوع پیش فرض تنظیم شده است. در این حالت، سیستم خود تصمیم می گیرد که در یک موقعیت خرابی خاص، کدام حافظه را بنویسد. علاوه بر این، منطق انتخاب به معیارهای زیادی بستگی دارد، از جمله فراوانی "سقوط" سیستم عامل.

پس از تغییر پیکربندی حذف حافظه ویندوز، ممکن است مجبور شوید کامپیوتر خود را مجددا راه اندازی کنید.

تنظیمات رجیستری

کلید رجیستری که تنظیمات crash dump را تعریف می کند:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

گزینه ها:

پارامتر نوعی از شرح
راه اندازی خودکار REG_DWORD هنگامی که BSOD رخ می دهد، راه اندازی مجدد خودکار را فعال / غیرفعال کنید.
CrashDumpEnabled REG_DWORD نوع دامپ ایجاد شده
  • 0 - یک حافظه خالی ایجاد نکنید.
  • 1 - تخلیه کامل حافظه؛
  • 2 - تخلیه حافظه هسته;
  • 3 - حافظه کوچک روگرفت;
DumpFile REG_EXPAND_SZ مسیر و نام دامپ هسته و دامپ کامل.
DumpFilters REG_MULTI_SZ فیلتر درایور در پشته درایور تخلیه حافظه. به شما امکان می دهد در مرحله ایجاد خرابی ها عملکرد جدیدی اضافه کنید. به عنوان مثال، رمزگذاری محتویات یک زباله. تغییر مقدار توصیه نمی شود.
ثبت رویداد REG_DWORD یک رویداد در گزارش سیستم بنویسید.
MinidumpDir REG_EZPAND_SZ مسیر و نام حافظه کوچک.
MinidumpsCount REG_DWORD حداکثر تعداد تخلیه حافظه کوچک. هنگامی که بیش از حد، نسخه های قدیمی تر شروع به بازنویسی می کنند.
زیاد نوشتن REG_DWORD یک فایل dump موجود را جایگزین کنید. فقط برای تخلیه حافظه هسته و تخلیه کامل حافظه.
IgnorePagefileSize REG_DWORD فایل صفحه‌بندی استاندارد را به‌عنوان مکانی برای ذخیره موقت (متوسط) حافظه خالی نادیده می‌گیرد. نشان می دهد که حافظه dump باید در یک فایل جداگانه نوشته شود. همراه با گزینه DedicatedDumpFile استفاده می شود.
DedicatedDumpFile REG_EZPAND_SZ مسیر و نام موقت فایل جایگزینبرای نوشتن یک حافظه خالی در پاس دوم، داده ها همچنان به DumpFile/MinidumpDir منتقل می شوند.

ایجاد یک حافظه خالی به صورت دستی

در بالا تنظیمات مربوط به آن را شرح دادیم ایجاد خودکاردر صورت بروز یک خطای بحرانی، یعنی یک استثنای کنترل نشده در کد هسته، خرابی سیستم تخلیه می شود. اما در زندگی واقعی، علاوه بر از کار افتادن سیستم عامل، شرایطی وجود دارد که شما نیاز به تخلیه حافظه سیستم در یک زمان خاص دارید. چگونه در این مورد باشیم؟ روش هایی برای دریافت یک کپی فوری از تمام حافظه فیزیکی وجود دارد، مانند استفاده از دستور .dump در اشکال زدایی WinDbg/LiveKD. LiveKD برنامه ای است که به شما اجازه می دهد تا اشکال زدایی هسته Kd را روی یک سیستم در حال اجرا در حالت محلی اجرا کنید. دیباگر WinDbg نیز ویژگی مشابهی دارد. با این حال، روش در حال پرواز برای به دست آوردن یک Dump دقیق نیست، زیرا تخلیه ایجاد شده در این مورد "ناسازگار" است، زیرا ایجاد یک Dump به زمان نیاز دارد، و در مورد استفاده از یک اشکال زدا در حالت هسته. ، سیستم به کار خود ادامه می دهد و تغییراتی در صفحات حافظه ایجاد می کند.

در زمان خرابی بحرانی، سیستم عامل ویندوز از کار می افتد و صفحه آبی مرگ (BSOD) را نمایش می دهد. محتوا حافظه دسترسی تصادفیو تمام اطلاعات مربوط به خطای رخ داده در فایل صفحه بندی نوشته می شود. در بعدی بوت شدن ویندوزیک خرابی خرابی با اطلاعات اشکال زدایی بر اساس داده های ذخیره شده ایجاد می شود. یک خطای مرگبار در گزارش رویداد سیستم ایجاد می شود.

توجه!اگر زیرسیستم دیسک خراب شده باشد یا خراب باشد، خرابی ایجاد نمی شود خطاهای اساسیدر مرحله اولیه بارگذاری ویندوز بوجود آمد.

انواع خرابی ویندوز

به عنوان مثال از عملیات فعلی سیستم های ویندوز 10 (Windows Server 2016)، بیایید به انواع اصلی تخلیه حافظه که سیستم می تواند ایجاد کند نگاه کنیم:

  • مینی حافظه کم (حافظه کوچک)(256 کیلوبایت). این نوع فایل شامل حداقل اطلاعات است. این فقط حاوی پیام خطای BSOD، اطلاعات مربوط به درایورها، فرآیندهایی است که در زمان خرابی فعال بودند، و اینکه کدام فرآیند یا رشته هسته باعث خرابی شده است.
  • تخلیه حافظه هسته. معمولاً کوچک، یک سوم مقدار حافظه فیزیکی است. تخلیه حافظه هسته جزئیات بیشتری نسبت به minidump دارد. این شامل اطلاعاتی در مورد درایورها و برنامه ها در حالت هسته است، شامل حافظه اختصاص داده شده است هسته ویندوزو لایه انتزاعی سخت افزاری (HAL) و همچنین حافظه اختصاص داده شده به درایورها و سایر برنامه ها در حالت هسته.
  • تخلیه کامل حافظه. بزرگ‌ترین اندازه و به حافظه‌ای برابر با رم سیستم شما به اضافه 1 مگابایت مورد نیاز ویندوز برای ایجاد این فایل نیاز دارد.
  • تخلیه خودکار حافظه. از نظر اطلاعات مربوط به تخلیه حافظه هسته است. این فقط در میزان فضایی که برای ایجاد فایل dump استفاده می کند متفاوت است. این نوع فایل در ویندوز 7 وجود نداشت. در ویندوز 8 اضافه شد.
  • تخلیه حافظه فعال. این نوع عناصری را که نمی توانند علت خرابی سیستم را تعیین کنند، فیلتر می کند. این به ویندوز 10 اضافه شده است و به ویژه در صورت استفاده مفید است ماشین مجازی، یا اگر سیستم شما یک میزبان Hyper-V است.

چگونه می توان تولید Dump حافظه را در ویندوز فعال کرد؟

با استفاده از Win + Pause، پنجره تنظیمات سیستم را باز کنید، " را انتخاب کنید تنظیمات اضافی سیستم" (تنظیمات پیشرفته سیستم). در برگه " علاوه بر این" (پیشرفته)، بخش "" (راه اندازی و بازیابی)، روی دکمه کلیک کنید " گزینه ها" (تنظیمات). در پنجره ای که باز می شود، اقدامات در صورت خرابی سیستم را پیکربندی کنید. چک باکس " رویدادها را در گزارش سیستم بنویسید» (رویدادی را در گزارش سیستم بنویسید)، نوع Dump را انتخاب کنید که در هنگام خرابی سیستم ایجاد شود. اگر در چک باکس " فایل dump موجود را جایگزین کنید» (بازنویسی هر فایل موجود) کادر را علامت بزنید، فایل در هر خرابی رونویسی می شود. بهتر است تیک این کادر را بردارید، سپس اطلاعات بیشتری برای تجزیه و تحلیل خواهید داشت. همچنین راه اندازی مجدد خودکار سیستم را غیرفعال کنید (راه اندازی مجدد خودکار).

در بیشتر موارد، یک تخلیه کوچک حافظه برای تجزیه و تحلیل علت BSOD کافی است.

اکنون، اگر BSOD رخ دهد، می توانید فایل dump را تجزیه و تحلیل کنید و علت خرابی ها را پیدا کنید. یک minidump به طور پیش فرض در پوشه %systemroot%\minidump ذخیره می شود. برای تجزیه و تحلیل فایل dump، توصیه می کنم از برنامه استفاده کنید WinDBG(دیباگر هسته مایکروسافت).

نصب WinDBG روی ویندوز

سودمند WinDBGگنجانده شده در " Windows 10 SDK» (Windows 10 SDK). .

فایل نامیده می شود winsdksetup.exeحجم 1.3 مگابایت

نصب را اجرا کنید و انتخاب کنید که بسته را روی این رایانه نصب کنید یا آن را برای نصب در رایانه های دیگر دانلود کنید. بسته را روی رایانه محلی نصب کنید.

شما می توانید کل بسته را نصب کنید، اما برای نصب فقط ابزار اشکال زدایی را انتخاب کنید اشکال زدایی ابزار برایپنجره ها.

پس از نصب، میانبرهای WinDBG را می توان در منوی شروع پیدا کرد.

تنظیم ارتباط فایل های .dmp با WinDBG

برای باز کردن فایل‌های dump با یک کلیک ساده، پسوند .dmp را به ابزار WinDBG نگاشت کنید.

  1. باز کن خط فرمانبه عنوان مدیر و اجرای دستورات برای سیستم 64 بیتی: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    برای سیستم 32 بیتی:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. در نتیجه، انواع فایل: .DMP، .HDMP، .MDMP، .KDMP، .WEW به WinDBG نگاشت می شوند.

راه اندازی سرور نماد اشکال زدایی در WinDBG

نمادهای اشکال زدایی (نشانه های اشکال زدایی یا فایل های نماد) بلوک های داده ای هستند که در فرآیند کامپایل یک برنامه همراه با یک فایل اجرایی تولید می شوند. چنین بلوک های داده حاوی اطلاعاتی در مورد نام متغیرها، به نام توابع، کتابخانه ها و غیره هستند. این داده ها هنگام اجرای برنامه مورد نیاز نیستند، اما هنگام اشکال زدایی آن مفید هستند. اجزای مایکروسافت با نمادهایی که از طریق سرور نماد مایکروسافت توزیع شده اند، جمع آوری می شوند.

WinDBG را برای استفاده از Microsoft Symbol Server راه اندازی کنید:

  • WinDBG را باز کنید؛
  • به منو بروید فایل –> مسیر فایل نماد.
  • یک رشته حاوی URL برای دانلود نمادهای اشکال زدایی از وب سایت مایکروسافت و پوشه ای برای ذخیره کش بنویسید: 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 Symbol Packages دانلود کنید.

تجزیه و تحلیل خرابی در WinDBG

دیباگر WinDBG فایل dump را باز می کند و نمادهای لازم برای اشکال زدایی را از یک پوشه محلی یا از اینترنت دانلود می کند. در طول این فرآیند، نمی توانید از WinDBG استفاده کنید. در پایین پنجره (در خط فرمان دیباگر) کتیبه ظاهر می شود اشکال زدایی متصل نیست.

دستورات در خط فرمان واقع در پایین پنجره وارد می شوند.

مهمترین چیزی که باید به آن توجه کنید کد خطا است که همیشه در آن نشان داده شده است مقدار هگزادسیمالو به نظر می رسد 0xXXXXXXXXX(در یکی از گزینه ها مشخص شده است - STOP:, 07/02/2019 0008F, 0x8F). در مثال ما، کد خطا 0x139 است.

دیباگر از شما می‌خواهد که دستور -v را اجرا کنید، فقط روی لینک بروید و کلیک کنید. این دستور برای چیست؟

  • تجزیه و تحلیل اولیه حافظه را انجام می دهد و ارائه می دهد اطلاعات دقیقبرای شروع تجزیه و تحلیل
  • این دستور کد STOP و نام نمادین خطا را نمایش می دهد.
  • پشته فراخوانی دستوراتی را نشان می دهد که منجر به خرابی شده است.
  • علاوه بر این، خطاهای آدرس IP، پردازش و ثبت در اینجا نمایش داده می شوند.
  • تیم می تواند توصیه های آماده ای برای حل مشکل ارائه دهد.

نکات اصلی که باید در هنگام تجزیه و تحلیل پس از اجرای دستور !analyze -v به آنها توجه کنید (لیست کامل نیست).

1: kd> !analyze -v


* *
*تحلیل بررسی اشکال*
* *
*****************************************************************************
نام نمادین خطای STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
شرح خطا (یک جزء هسته یک ساختار داده مهم را خراب کرده است. این خرابی به طور بالقوه می تواند به مهاجم اجازه دهد کنترل این ماشین را در دست بگیرد):

یک جزء هسته یک ساختار داده مهم را خراب کرده است. این فساد به طور بالقوه می تواند به کاربر مخرب اجازه دهد تا کنترل این دستگاه را در دست بگیرد.
آرگومان های خطا:

استدلال ها:
Arg1: 0000000000000003، یک LIST_ENTRY خراب شده است (یعنی دو بار حذف شود).
Arg2: ffffd0003a20d5d0، آدرس قاب تله برای استثنایی که باعث بررسی باگ شده است
Arg3: ffffd0003a20d528، آدرس رکورد استثنا برای استثنایی که باعث بررسی باگ شده است
ارگ4: 0000000000000000، رزرو شده
جزئیات رفع اشکال:
------------------

شمارنده نشان می دهد که چند بار سیستم با یک خطای مشابه از کار افتاده است:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

کد خطا STOP به صورت اختصاری:

BUGCHECK_STR: 0x139

فرآیندی که از کار افتاد (الزاماً دلیل خطا نیست، فقط آن فرآیند در زمان خرابی در حافظه اجرا می شد):

PROCESS_NAME: sqlservr.exe

رمزگشایی کد خطا: سیستم یک سرریز پشته بافر را در این برنامه شناسایی کرده است که ممکن است به مهاجم اجازه دهد کنترل این برنامه را در دست بگیرد.

ERROR_CODE: (NTSTATUS) 0xc0000409 - سیستم بیش از حد یک بافر مبتنی بر پشته را در این برنامه تشخیص داد. این بیش از حد به طور بالقوه می تواند به کاربر مخرب اجازه دهد تا کنترل این برنامه را به دست آورد.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - سیستم بیش از حد یک بافر مبتنی بر پشته را در این برنامه تشخیص داد. این بیش از حد به طور بالقوه می تواند به کاربر مخرب اجازه دهد تا کنترل این برنامه را به دست آورد.

آخرین تماس در پشته:

LAST_CONTROL_TRANSFER: از fffff8040117d6a9 به fffff8040116b0a0

پشته تماس در زمان شکست:

STACK_TEXT:
FFFF
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2KiBxpatch!
fffd000`3a20d3f0 fffff804`0117c150: 00000000`000000000 00000000`00000000 000000000`0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
FFFF
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 fffe000`fcacb000 ffffd000`3a20d95! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000
ffffd000`3a20d990 fffff804`0117d313: fffffff`fffffffe 00000000`00000000 00000000`000000000 000000eb`a0cf1380:
FFFF
000000ee'f25ed2b8 00000000'00000000: 00000000'0000000000000000

بخشی از کد که در آن خطا رخ داده است:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: مالک ماشین

نام ماژول در جدول شی هسته. اگر آنالیزور توانست یک درایور مشکل دار را تشخیص دهد، نام در فیلدهای MODULE_NAME و IMAGE_NAME نمایش داده می شود:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > 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)

در مثال بالا، تجزیه و تحلیل به فایل هسته ntkrnlmp.exe اشاره کرد. هنگامی که تجزیه و تحلیل تخلیه حافظه به یک درایور سیستم (به عنوان مثال، win32k.sys) یا یک فایل هسته (به عنوان مثال، ntkrnlmp.exe در مثال ما) اشاره می کند، به احتمال زیاد فایل داده شدهعلت مشکل نیست خیلی اوقات معلوم می شود که مشکل در درایور دستگاه است، تنظیمات بایوسیا خرابی تجهیزات

اگر می بینید که BSOD به دلیل یک راننده شخص ثالث است، نام آن در مقادیر MODULE_NAME و IMAGE_NAME فهرست می شود.

مثلا:

مسیر تصویر: \SystemRoot\system32\drivers\cmudaxp.sys
نام تصویر: cmudaxp.sys

ویژگی های فایل درایور را باز کنید و نسخه آن را بررسی کنید. در بیشتر موارد، مشکل درایورها با به روز رسانی آنها حل می شود.