การถ่ายโอนข้อมูลความผิดพลาดของ Windows การถ่ายโอนข้อมูลหน่วยความจำคืออะไร? โปรแกรมสำหรับลบ RAM dump

ในบทที่ ตรวจพบการถ่ายโอนข้อมูลผิดพลาด พารามิเตอร์ต่อไปนี้:

REG_DWORD-พารามิเตอร์ รีบูตอัตโนมัติด้วยความหมาย 0x1(ตัวเลือก ทำการรีบูตอัตโนมัติหน้าต่างย่อย คุณสมบัติของระบบ);

REG_DWORD-พารามิเตอร์ เปิดใช้งาน CrashDump แล้วด้วยความหมาย 0x0หากไม่มีการสร้างดัมพ์หน่วยความจำ 0x1ดัมพ์หน่วยความจำเต็ม; 0x2ดัมพ์หน่วยความจำเคอร์เนล; 0x3ดัมพ์หน่วยความจำขนาดเล็ก (64KB);

REG_EXPAND_SZ-พารามิเตอร์ ดัมพ์ไฟล์ด้วยความหมาย %SystemRoot%\MEMORY.DMP(ตำแหน่งจัดเก็บไฟล์ดัมพ์);

REG_DWORD-พารามิเตอร์ บันทึกเหตุการณ์ด้วยความหมาย 0x1(ตัวเลือก บันทึกเหตุการณ์หน้าต่าง );

REG_EXPAND_SZ-พารามิเตอร์ มินิดัมพ์Dirด้วยความหมาย %SystemRoot%\Minidump(ไม่จำเป็น);

REG_DWORD-พารามิเตอร์ เขียนทับด้วยความหมาย 0x1(ตัวเลือก แทนที่ไฟล์ที่มีอยู่หน้าต่าง );

REG_DWORD-พารามิเตอร์ ส่งการแจ้งเตือนด้วยความหมาย 0x1(ตัวเลือก ส่งการแจ้งเตือนของผู้ดูแลระบบหน้าต่าง ).

ระบบสร้างไฟล์หน่วยความจำฉุกเฉินอย่างไร

ในระหว่างการบูต ระบบปฏิบัติการจะตรวจสอบพารามิเตอร์การสร้างฉุกเฉินในส่วนรีจิสทรี . หากมีการระบุพารามิเตอร์อย่างน้อยหนึ่งตัว ระบบจะสร้างแผนผังของบล็อกดิสก์ที่อยู่ในวอลลุมสำหรับบูทและจัดเก็บไว้ในหน่วยความจำ ระบบยังกำหนดว่าอุปกรณ์ดิสก์ใดควบคุมวอลลุมสำหรับบูทและคำนวณเช็คซัมสำหรับอิมเมจ ในหน่วยความจำและโครงสร้างข้อมูลที่ต้องเป็นจำนวนเต็มจึงจะสามารถดำเนินการ I/O ได้

หลังจากเกิดความล้มเหลว เคอร์เนลของระบบจะตรวจสอบความสมบูรณ์ของแผนผังไฟล์เพจ ไฟล์ดิสก์ และโครงสร้างการควบคุมดิสก์. หากความสมบูรณ์ของโครงสร้างเหล่านี้ไม่ถูกละเมิด เคอร์เนลของระบบจะเรียกใช้ฟังก์ชัน I/O ของดิสก์พิเศษ ออกแบบมาเพื่อบันทึกอิมเมจหน่วยความจำหลังจากเกิดความล้มเหลว ฟังก์ชัน I/O เหล่านี้มีอยู่ในตัวเองและไม่ต้องพึ่งพาบริการเคอร์เนล เนื่องจากโปรแกรมที่รับผิดชอบในการเขียน Crash dump ไม่สามารถคาดเดาได้ว่าส่วนใดของเคอร์เนลระบบหรืออุปกรณ์ได้รับความเสียหายเมื่อเกิดความผิดพลาด เคอร์เนลของระบบเขียนข้อมูลจากหน่วยความจำไปยังแผนผังเซกเตอร์ไฟล์เพจ (ไม่จำเป็นต้องใช้ระบบไฟล์)

ขั้นแรก เคอร์เนลของระบบจะตรวจสอบสถานะของแต่ละส่วนประกอบที่เกี่ยวข้องกับกระบวนการดัมพ์ ทำเช่นนี้เพื่อให้เมื่อเขียนโดยตรงไปยังเซกเตอร์ของดิสก์ ข้อมูลที่อยู่นอกไฟล์จะไม่เสียหาย ขนาดไฟล์ควรเป็น 1 เอ็มบีขนาดใหญ่ขึ้น หน่วยความจำกายภาพเนื่องจากเมื่อมีการเขียนข้อมูล ส่วนหัวจะถูกสร้างขึ้นซึ่งมีลายเซ็นฉุกเฉินและค่าของตัวแปรเคอร์เนลระบบที่สำคัญหลายตัว ชื่อเรื่องใช้เวลาน้อยกว่า 1 เอ็มบีแต่ระบบปฏิบัติการสามารถเพิ่ม (หรือลด) ขนาดของไฟล์เพจได้อย่างน้อย 1 เอ็มบี.

หลังจากบูตระบบ ผู้จัดการเซสชั่น (ตัวจัดการเซสชัน Windows NT; ที่อยู่ดิสก์ – \WINDOWS\system32\smss.exe) เตรียมใช้งานไฟล์ระบบโดยใช้ฟังก์ชันของตัวเองเพื่อสร้างแต่ละไฟล์ NtCreatePagingFile. NtCreatePagingFileกำหนดว่าไฟล์ที่กำลังเตรียมใช้งานอยู่หรือไม่ และถ้ามี ตรวจสอบว่ามีส่วนหัวหรือไม่ . ถ้ามีชื่อเรื่องแล้ว NtCreatePagingFileส่งไปที่ ผู้จัดการเซสชั่นรหัสพิเศษ หลังจากนั้น ผู้จัดการเซสชั่นเริ่มกระบวนการ วินโลกอน (โปรแกรมล็อกออน Windows NT; ที่อยู่ดิสก์ – \WINDOWS\system32\winlogon.exe) ซึ่งได้รับแจ้งถึงเหตุฉุกเฉิน . วินโลกอนเริ่มโปรแกรม บันทึกการถ่ายโอนข้อมูล (โปรแกรมบันทึกการคัดลอก หน่วยความจำวินโดวส์นท; ที่อยู่ดิสก์ – \WINDOWS\system32\savedump.exe) ซึ่งแยกวิเคราะห์ส่วนหัว และกำหนดการดำเนินการเพิ่มเติมในกรณีฉุกเฉิน

หากชื่อเรื่องบ่งบอกถึงการมีอยู่ , ที่ บันทึกการถ่ายโอนข้อมูลคัดลอกข้อมูลจากไฟล์ไปยังไฟล์ฉุกเฉินที่ระบุชื่อ REG_EXPAND_SZ-พารามิเตอร์ ดัมพ์ไฟล์ส่วน . ลาก่อน บันทึกการถ่ายโอนข้อมูลเขียนไฟล์ใหม่ ระบบปฏิบัติการไม่ได้ใช้ส่วนของไฟล์เพจที่มีเหตุฉุกเฉิน . ในช่วงเวลานี้ จำนวนหน่วยความจำเสมือนที่พร้อมใช้งานสำหรับระบบและแอปพลิเคชันจะลดลง (ในขณะเดียวกัน ข้อความอาจปรากฏบนหน้าจอแสดงว่าไม่มีหน่วยความจำเสมือน) แล้ว บันทึกการถ่ายโอนข้อมูลแจ้งผู้จัดการหน่วยความจำว่าการบันทึกเสร็จสมบูรณ์ และเขาก็ปล่อยส่วนนั้นออกมา ไฟล์ที่มันเก็บไว้ สำหรับการใช้งานทั่วไป

กำลังบันทึกไฟล์ , โปรแกรม บันทึกการถ่ายโอนข้อมูลบันทึกการสร้างเหตุฉุกเฉิน ในบันทึกเหตุการณ์ ตัวอย่างเช่น: “คอมพิวเตอร์ถูกรีบูตหลังจากเกิดข้อผิดพลาดร้ายแรง: 0x100000d1 (0xc84d90a6, 0x00000010, 0x00000000, 0xc84d90a6) บันทึกสำเนาหน่วยความจำแล้ว: C:\WINDOWS\Minidump\Mini060309-01.dmp"

ดัมพ์หน่วยความจำเต็มเขียนเนื้อหาทั้งหมดของหน่วยความจำเมื่อเกิดข้อผิดพลาดร้ายแรง สำหรับตัวเลือกนี้ คุณต้องมีไฟล์เพจจิ้งบนโวลุ่มสำหรับบูต ซึ่งมีขนาดเท่ากับโวลุ่มของฟิสิคัลทั้งหมด หน่วยความจำเข้าถึงโดยสุ่มบวก 1 เอ็มบี. ค่าเริ่มต้นเต็ม หน่วยความจำถูกเขียนลงในไฟล์ %SystemRoot%\Memory.dmp. หากเกิดข้อผิดพลาดใหม่และสร้างไฟล์ใหม่ที่สมบูรณ์หน่วยความจำ (หรือ หน่วยความจำเคอร์เนล) ไฟล์ก่อนหน้าจะถูกแทนที่ (เขียนทับ) พารามิเตอร์ ดัมพ์หน่วยความจำเต็มไม่พร้อมใช้งานบนระบบที่ใช้ระบบปฏิบัติการ 32 บิตและ RAM 2 ตัวขึ้นไป

หากเกิดข้อผิดพลาดใหม่และสร้างไฟล์ใหม่ที่สมบูรณ์ หน่วยความจำไฟล์ก่อนหน้าจะถูกแทนที่

ดัมพ์หน่วยความจำเคอร์เนลเขียนเฉพาะหน่วยความจำเคอร์เนลทำให้กระบวนการเขียนข้อมูลลงบันทึกเมื่อระบบหยุดกะทันหันดำเนินไปเร็วขึ้น ขึ้นอยู่กับจำนวนหน่วยความจำกายภาพในกรณีนี้ ไฟล์เพจต้องมีขนาด 50 ถึง 800 เอ็มบีหรือหนึ่งในสามของหน่วยความจำกายภาพบนวอลลุมสำหรับบูต หน่วยความจำเคอร์เนลถูกเขียนลงในไฟล์ %SystemRoot%\Memory.dmp.

นี้ ไม่รวมหน่วยความจำที่ไม่ได้จัดสรรหรือหน่วยความจำที่จัดสรรให้กับโปรแกรมโหมด รวมเฉพาะหน่วยความจำที่จัดสรรให้กับเคอร์เนลและเลเยอร์เฉพาะของฮาร์ดแวร์ ( ฮาล) วี วินโดว์ 2000และระบบเวอร์ชันใหม่กว่า ตลอดจนหน่วยความจำที่จัดสรรสำหรับโหมดเคอร์เนลและโปรแกรมโหมดเคอร์เนลอื่นๆ ในกรณีส่วนใหญ่นี้ เป็นตัวเลือกที่ต้องการมากที่สุด ใช้พื้นที่น้อยกว่ามากเมื่อเทียบกับพื้นที่เต็ม ในขณะที่ไม่รวมเฉพาะส่วนหน่วยความจำที่มีแนวโน้มว่าจะไม่เกี่ยวข้องกับข้อผิดพลาด

เมื่อมีข้อผิดพลาดใหม่เกิดขึ้นและมีการสร้างไฟล์ใหม่ หน่วยความจำเคอร์เนล ไฟล์ก่อนหน้าจะถูกแทนที่

ดัมพ์หน่วยความจำขนาดเล็กเขียนปริมาณที่น้อยที่สุด ข้อมูลที่เป็นประโยชน์จำเป็นต้องระบุสาเหตุของปัญหา เพื่อสร้างสิ่งเล็กๆ หน่วยความจำต้องการให้ขนาดไฟล์หน้าอย่างน้อย 2 เอ็มบีบนโวลุ่มการบูต

ไฟล์ขนาดเล็ก หน่วยความจำประกอบด้วยข้อมูลต่อไปนี้:

– ข้อความเกี่ยวกับข้อผิดพลาดร้ายแรง พารามิเตอร์ และข้อมูลอื่น ๆ

– รายการดาวน์โหลด;

- บริบท ( ป.ร.บ) ที่เกิดความล้มเหลว;

การประมวลผล) สำหรับกระบวนการที่ทำให้เกิดข้อผิดพลาด

– ประมวลผลข้อมูลและบริบทเคอร์เนล ( เอธรีด) สำหรับเธรดที่ทำให้เกิดข้อผิดพลาด

– สแต็กการเรียกโหมดเคอร์เนลสำหรับเธรดที่ทำให้เกิดข้อผิดพลาด

ไฟล์เล็ก หน่วยความจำจะถูกใช้เมื่อพื้นที่ฮาร์ดดิสก์มีจำกัด อย่างไรก็ตาม เนื่องจากมีข้อมูลที่จำกัด การวิเคราะห์ไฟล์นี้อาจตรวจไม่พบข้อผิดพลาดที่ไม่ได้เกิดขึ้นโดยตรงจากเธรดที่ทำงานอยู่ในเวลาที่เกิดข้อผิดพลาดเสมอไป

หากเกิดข้อผิดพลาดต่อไปนี้และมีการสร้างไฟล์ขนาดเล็กไฟล์ที่สอง หน่วยความจำ ไฟล์ก่อนหน้าจะยังคงอยู่ ให้กับแต่ละคน ไฟล์เพิ่มเติมมีการระบุชื่อที่ไม่ซ้ำใคร วันที่ถูกเข้ารหัสในชื่อไฟล์ ตัวอย่างเช่น, Mini051509-01.dmp- นี่เป็นไฟล์แรก หน่วยความจำสร้างเมื่อวันที่ 15 พฤษภาคม 2552 รายการไฟล์ขนาดเล็กทั้งหมด หน่วยความจำถูกจัดเก็บไว้ในโฟลเดอร์ %SystemRoot%\Minidump.

ระบบปฏิบัติการ เชื่อถือได้มากกว่าเวอร์ชันก่อนหน้าอย่างไม่ต้องสงสัย - ต้องขอบคุณความพยายามของนักพัฒนาทั้งสอง ไมโครซอฟต์ทั้งผู้พัฒนาฮาร์ดแวร์และผู้พัฒนาซอฟต์แวร์แอพพลิเคชั่น . อย่างไรก็ตาม สถานการณ์ฉุกเฉิน- ความล้มเหลวและการล่มสลายของระบบทุกประเภทเป็นสิ่งที่หลีกเลี่ยงไม่ได้และขึ้นอยู่กับว่าความรู้และทักษะในการกำจัดสิ่งเหล่านั้น ขึ้นอยู่กับว่าเขาจะใช้เวลาสักครู่ในการแก้ไขปัญหาหรือไม่ (เช่น อัปเดต/แก้ไขจุดบกพร่อง หรือติดตั้งใหม่ โปรแกรมประยุกต์ทำให้เกิดข้อขัดข้อง) – หรือใช้เวลาหลายชั่วโมงในการติดตั้ง/กำหนดค่าใหม่ ระบบปฏิบัติการและซอฟต์แวร์ประยุกต์ (ซึ่งไม่รับประกันว่าจะไม่มีความล้มเหลวและข้อขัดข้องในอนาคต!)

ผู้ดูแลระบบจำนวนมากละเลยที่จะวิเคราะห์ความล้มเหลวในการถ่ายโอนข้อมูล หน้าต่าง โดยเชื่อว่าการทำงานร่วมกับพวกเขานั้นยากเกินไป มันยากแต่ก็เป็นไปได้ แม้ว่า ยกตัวอย่างเช่น การวิเคราะห์อย่างใดอย่างหนึ่งก็ตาม จากสิบจะประสบความสำเร็จ - ความพยายามที่ใช้ในการฝึกฝนเทคนิคที่ง่ายที่สุดในการวิเคราะห์สถานการณ์ฉุกเฉิน ,จะไม่สูญเปล่า!..

ระบบ Windows ทั้งหมดเมื่อตรวจพบ ข้อผิดพลาดร้ายแรงทำการถ่ายโอนข้อมูลความผิดพลาด (สแนปชอต) ของเนื้อหาของ RAM และบันทึกลงในฮาร์ดไดรฟ์ ดัมพ์หน่วยความจำมีสามประเภท:

ดัมพ์หน่วยความจำเต็ม – บันทึกเนื้อหาทั้งหมดของ RAM ขนาดภาพเท่ากับขนาด RAM + 1 MB (ส่วนหัว) ไม่ค่อยได้ใช้ เนื่องจากในระบบที่มีหน่วยความจำจำนวนมาก ขนาดดัมพ์จะใหญ่เกินไป

การถ่ายโอนข้อมูลหน่วยความจำเคอร์เนล - บันทึกข้อมูล RAM ที่เกี่ยวข้องกับโหมดเคอร์เนลเท่านั้น ข้อมูลโหมดผู้ใช้ไม่ได้รับการบันทึกเนื่องจากไม่มีข้อมูลเกี่ยวกับสาเหตุของความล้มเหลวของระบบ ขนาดของไฟล์ดัมพ์ขึ้นอยู่กับขนาดของ RAM และแตกต่างกันไปตั้งแต่ 50 MB (สำหรับระบบที่มี RAM 128 MB) ถึง 800 MB (สำหรับระบบที่มี RAM 8 GB)

ดัมพ์หน่วยความจำขนาดเล็ก (มินิดัมพ์) - มีข้อมูลจำนวนค่อนข้างน้อย: รหัสข้อผิดพลาดพร้อมพารามิเตอร์ รายการไดรเวอร์ที่โหลดลงใน RAM ในขณะที่ระบบขัดข้อง ฯลฯ แต่ข้อมูลนี้ก็เพียงพอที่จะระบุไดรเวอร์ที่ผิดพลาดได้ . ข้อดีอีกประการหนึ่งของการถ่ายโอนข้อมูลประเภทนี้คือขนาดไฟล์เล็ก

ติดตั้งระบบ

เพื่อระบุไดรเวอร์ที่เป็นสาเหตุ เราจะใช้การถ่ายโอนข้อมูลหน่วยความจำขนาดเล็กก็เพียงพอแล้ว เพื่อให้ระบบบันทึกมินิดัมพ์ระหว่างที่เกิดการขัดข้อง คุณต้องดำเนินการขั้นตอนต่อไปนี้:

สำหรับวินโดวส์เอ็กซ์พี สำหรับวินโดวส์ 7
  1. คอมพิวเตอร์ของฉัน คุณสมบัติ
  2. ไปที่แท็บ นอกจากนี้;
  3. ตัวเลือก;
  4. ในสนาม การเขียนข้อมูลการดีบักเลือก ดัมพ์หน่วยความจำขนาดเล็ก (64 KB).
  1. คลิกขวาที่ไอคอน คอมพิวเตอร์จาก เมนูบริบทเลือก คุณสมบัติ(หรือคีย์ผสม Win+Pause);
  2. ในเมนูด้านซ้ายให้คลิกที่รายการ การตั้งค่าระบบขั้นสูง;
  3. ไปที่แท็บ นอกจากนี้;
  4. ในช่องดาวน์โหลดและการกู้คืน คุณต้องคลิกปุ่ม ตัวเลือก;
  5. ในสนาม การเขียนข้อมูลการดีบักเลือก ดัมพ์หน่วยความจำขนาดเล็ก (128 KB).

หลังจากเสร็จสิ้นการปรับแต่งทั้งหมดแล้ว หลังจากแต่ละ BSoD ไฟล์ที่มีนามสกุล .dmp จะถูกบันทึกไว้ในโฟลเดอร์ C:\WINDOWS\Minidump ฉันแนะนำให้คุณอ่านเนื้อหา "" คุณยังสามารถทำเครื่องหมายในช่อง “ แทนที่ไฟล์ดัมพ์ที่มีอยู่" ในกรณีนี้ ดัมพ์ข้อขัดข้องใหม่แต่ละรายการจะถูกเขียนทับอันเก่า ฉันไม่แนะนำให้เปิดใช้งานตัวเลือกนี้

การวิเคราะห์การถ่ายโอนข้อมูลข้อขัดข้องโดยใช้ BlueScreenView

ดังนั้นหลังจากการปรากฏตัว หน้าจอสีน้ำเงินเสียชีวิต ระบบได้บันทึกข้อมูลความผิดพลาดใหม่ เพื่อวิเคราะห์ดัมพ์ฉันแนะนำให้ใช้ โปรแกรมบลูสกรีนวิว. สามารถดาวน์โหลดได้ฟรี โปรแกรมนี้ค่อนข้างสะดวกและมีอินเทอร์เฟซที่ใช้งานง่าย หลังจากติดตั้งแล้ว สิ่งแรกที่คุณต้องทำคือระบุตำแหน่งสำหรับจัดเก็บหน่วยความจำดัมพ์บนระบบ โดยไปที่รายการเมนู “ ตัวเลือก” และเลือก “ ขั้นสูงตัวเลือก" เลือกปุ่มตัวเลือก “ โหลดจากที่กำลังติดตามมินิดัมพ์โฟลเดอร์” และระบุโฟลเดอร์ที่เก็บดัมพ์ หากไฟล์ถูกจัดเก็บไว้ในโฟลเดอร์ C:\WINDOWS\Minidump คุณสามารถคลิกปุ่ม “ ค่าเริ่มต้น" คลิกตกลงและไปที่อินเทอร์เฟซของโปรแกรม

โปรแกรมประกอบด้วยสามช่วงตึกหลัก:

  1. บล็อกเมนูหลักและแผงควบคุม
  2. บล็อกรายการดัมพ์ที่ขัดข้อง
  3. ขึ้นอยู่กับพารามิเตอร์ที่เลือก อาจมี:
  • รายการไดรเวอร์ทั้งหมดใน RAM ก่อนที่หน้าจอสีน้ำเงินจะปรากฏขึ้น (โดยค่าเริ่มต้น)
  • รายการไดรเวอร์ที่อยู่ใน RAM stack
  • ภาพหน้าจอ BSoD;
  • และค่าอื่นๆที่เราจะไม่ใช้

ในบล็อกรายการการถ่ายโอนข้อมูลหน่วยความจำ (ทำเครื่องหมายด้วยหมายเลข 2 ในรูป) ให้เลือกดัมพ์ที่เราสนใจและดูรายการไดรเวอร์ที่โหลดลงใน RAM (ทำเครื่องหมายด้วยหมายเลข 3 ในรูป) ไดรเวอร์ที่อยู่ในสแต็กหน่วยความจำจะเป็นสีชมพู พวกเขาเป็นสาเหตุของ BSoD จากนั้นไปที่เมนูหลักของไดรเวอร์ พิจารณาว่าอุปกรณ์หรือโปรแกรมใดเป็นของอุปกรณ์ ก่อนอื่นให้ใส่ใจกับ ไฟล์ระบบเพราะไฟล์ระบบจะโหลดอยู่ใน RAM ยังไงก็ตาม สังเกตได้ง่ายว่าไดรเวอร์ที่ผิดพลาดในภาพคือ myfault.sys ฉันจะบอกว่าโปรแกรมนี้เปิดตัวโดยเฉพาะเพื่อทำให้เกิดข้อผิดพลาด Stop หลังจากระบุไดรเวอร์ที่ผิดพลาดแล้ว คุณจะต้องอัปเดตหรือลบไดรเวอร์ออกจากระบบ

เพื่อให้โปรแกรมแสดงรายการไดรเวอร์ที่อยู่ในสแต็กหน่วยความจำเมื่อมี BSoD เกิดขึ้นคุณต้องไปที่รายการเมนู “ ตัวเลือก“คลิกที่เมนู” ต่ำกว่าบานหน้าต่างโหมด” และเลือก “ เท่านั้นไดรเวอร์พบในซ้อนกัน” (หรือกดปุ่ม F7) และหากต้องการแสดงภาพหน้าจอของข้อผิดพลาด ให้เลือก “ สีฟ้าหน้าจอในประสบการณ์สไตล์” (F8) หากต้องการกลับไปยังรายการไดรเวอร์ทั้งหมด คุณต้องเลือก “ ทั้งหมดไดรเวอร์” (F6)

เมื่อตรวจพบข้อผิดพลาดร้ายแรง ระบบ Windows ทั้งหมด ให้สร้างไฟล์แครชดัมพ์ (สแนปชอต) ของเนื้อหาของ RAM และบันทึกลงในฮาร์ดไดรฟ์ ดัมพ์หน่วยความจำมีสามประเภท:

ดัมพ์หน่วยความจำเต็ม – บันทึกเนื้อหาทั้งหมดของ RAM ขนาดภาพเท่ากับขนาด RAM + 1 MB (ส่วนหัว) ไม่ค่อยได้ใช้ เนื่องจากในระบบที่มีหน่วยความจำจำนวนมาก ขนาดดัมพ์จะใหญ่เกินไป

การถ่ายโอนข้อมูลหน่วยความจำเคอร์เนล - บันทึกข้อมูล RAM ที่เกี่ยวข้องกับโหมดเคอร์เนลเท่านั้น ข้อมูลโหมดผู้ใช้ไม่ได้รับการบันทึกเนื่องจากไม่มีข้อมูลเกี่ยวกับสาเหตุของความล้มเหลวของระบบ ขนาดของไฟล์ดัมพ์ขึ้นอยู่กับขนาดของ RAM และแตกต่างกันไปตั้งแต่ 50 MB (สำหรับระบบที่มี RAM 128 MB) ถึง 800 MB (สำหรับระบบที่มี RAM 8 GB)

ดัมพ์หน่วยความจำขนาดเล็ก (มินิดัมพ์) - มีข้อมูลจำนวนค่อนข้างน้อย: รหัสข้อผิดพลาดพร้อมพารามิเตอร์ รายการไดรเวอร์ที่โหลดลงใน RAM ในขณะที่ระบบขัดข้อง ฯลฯ แต่ข้อมูลนี้ก็เพียงพอที่จะระบุไดรเวอร์ที่ผิดพลาดได้ . ข้อดีอีกประการหนึ่งของการถ่ายโอนข้อมูลประเภทนี้คือขนาดไฟล์เล็ก

ติดตั้งระบบ

เพื่อระบุไดรเวอร์ที่ทำให้เกิดหน้าจอสีน้ำเงิน เราจำเป็นต้องใช้เพียงการถ่ายโอนข้อมูลหน่วยความจำขนาดเล็กเท่านั้น เพื่อให้ระบบบันทึกมินิดัมพ์ระหว่างที่เกิดการขัดข้อง คุณต้องดำเนินการขั้นตอนต่อไปนี้:

สำหรับวินโดวส์เอ็กซ์พี สำหรับวินโดวส์ 7
  1. คอมพิวเตอร์ของฉัน คุณสมบัติ
  2. ไปที่แท็บ นอกจากนี้;
  3. ตัวเลือก;
  4. ในสนาม การเขียนข้อมูลการดีบักเลือก ดัมพ์หน่วยความจำขนาดเล็ก (64 KB).
  1. คลิกขวาที่ไอคอน คอมพิวเตอร์จากเมนูบริบทให้เลือก คุณสมบัติ(หรือคีย์ผสม Win+Pause);
  2. ในเมนูด้านซ้ายให้คลิกที่รายการ การตั้งค่าระบบขั้นสูง;
  3. ไปที่แท็บ นอกจากนี้;
  4. ในช่องดาวน์โหลดและการกู้คืน คุณต้องคลิกปุ่ม ตัวเลือก;
  5. ในสนาม การเขียนข้อมูลการดีบักเลือก ดัมพ์หน่วยความจำขนาดเล็ก (128 KB).

หลังจากเสร็จสิ้นการปรับแต่งทั้งหมดแล้ว หลังจากแต่ละ BSoD ไฟล์ที่มีนามสกุล .dmp จะถูกบันทึกไว้ในโฟลเดอร์ C:\WINDOWS\Minidump ฉันแนะนำให้คุณอ่านเนื้อหา "วิธีสร้างโฟลเดอร์" คุณยังสามารถทำเครื่องหมายในช่อง “ แทนที่ไฟล์ดัมพ์ที่มีอยู่" ในกรณีนี้ ดัมพ์ข้อขัดข้องใหม่แต่ละรายการจะถูกเขียนทับอันเก่า ฉันไม่แนะนำให้เปิดใช้งานตัวเลือกนี้

การวิเคราะห์ Crash Dump โดยใช้โปรแกรม BLUESCREENVIEW

ดังนั้น หลังจากที่หน้าจอสีน้ำเงินแห่งความตายปรากฏขึ้น ระบบจะบันทึกดัมพ์หน่วยความจำขัดข้องใหม่ เพื่อวิเคราะห์ดัมพ์ ฉันแนะนำให้ใช้โปรแกรม BlueScreenView สามารถดาวน์โหลดได้ฟรีที่นี่ โปรแกรมนี้ค่อนข้างสะดวกและมีอินเทอร์เฟซที่ใช้งานง่าย หลังจากติดตั้งแล้ว สิ่งแรกที่คุณต้องทำคือระบุตำแหน่งสำหรับจัดเก็บหน่วยความจำดัมพ์บนระบบ โดยไปที่รายการเมนู “ ตัวเลือก” และเลือก “ ขั้นสูงตัวเลือก" เลือกปุ่มตัวเลือก “ โหลดจากที่กำลังติดตามมินิดัมพ์โฟลเดอร์” และระบุโฟลเดอร์ที่เก็บดัมพ์ หากไฟล์ถูกจัดเก็บไว้ในโฟลเดอร์ C:\WINDOWS\Minidump คุณสามารถคลิกปุ่ม “ ค่าเริ่มต้น" คลิกตกลงและไปที่อินเทอร์เฟซของโปรแกรม

โปรแกรมประกอบด้วยสามช่วงตึกหลัก:

  1. บล็อกเมนูหลักและแผงควบคุม
  2. บล็อกรายการดัมพ์ที่ขัดข้อง
  3. ขึ้นอยู่กับพารามิเตอร์ที่เลือก อาจมี:
  • รายการไดรเวอร์ทั้งหมดใน RAM ก่อนที่หน้าจอสีน้ำเงินจะปรากฏขึ้น (โดยค่าเริ่มต้น)
  • รายการไดรเวอร์ที่อยู่ใน RAM stack
  • ภาพหน้าจอ BSoD;
  • และค่าอื่นๆที่เราจะไม่ใช้

ในบล็อกรายการการถ่ายโอนข้อมูลหน่วยความจำ (ทำเครื่องหมายด้วยหมายเลข 2 ในรูป) ให้เลือกดัมพ์ที่เราสนใจและดูรายการไดรเวอร์ที่โหลดลงใน RAM (ทำเครื่องหมายด้วยหมายเลข 3 ในรูป) ไดรเวอร์ที่อยู่ในสแต็กหน่วยความจำจะเป็นสีชมพู พวกเขาเป็นสาเหตุของ BSoD จากนั้นไปที่เมนูหลักของไดรเวอร์ พิจารณาว่าอุปกรณ์หรือโปรแกรมใดเป็นของอุปกรณ์ ก่อนอื่นให้ใส่ใจกับไฟล์ที่ไม่ใช่ระบบเนื่องจากไฟล์ระบบจะถูกโหลดใน RAM ไม่ว่าในกรณีใด สังเกตได้ง่ายว่าไดรเวอร์ที่ผิดพลาดในภาพคือ myfault.sys ฉันจะบอกว่าโปรแกรมนี้เปิดตัวโดยเฉพาะเพื่อทำให้เกิดข้อผิดพลาด Stop หลังจากระบุไดรเวอร์ที่ผิดพลาดแล้ว คุณจะต้องอัปเดตหรือลบไดรเวอร์ออกจากระบบ

เพื่อให้โปรแกรมแสดงรายการไดรเวอร์ที่อยู่ในสแต็กหน่วยความจำเมื่อมี BSoD เกิดขึ้นคุณต้องไปที่รายการเมนู “ ตัวเลือก“คลิกที่เมนู” ต่ำกว่าบานหน้าต่างโหมด” และเลือก “ เท่านั้นไดรเวอร์พบในซ้อนกัน” (หรือกดปุ่ม F7) และหากต้องการแสดงภาพหน้าจอของข้อผิดพลาด ให้เลือก “ สีฟ้าหน้าจอในประสบการณ์สไตล์” (F8) หากต้องการกลับไปยังรายการไดรเวอร์ทั้งหมด คุณต้องเลือก “ ทั้งหมดไดรเวอร์” (F6)

เมื่อเกิดความล้มเหลวร้ายแรง ระบบปฏิบัติการ Windows จะหยุดทำงานและแสดงหน้าจอสีน้ำเงินแห่งความตาย (BSOD) เนื้อหาของ RAM และข้อมูลทั้งหมดเกี่ยวกับข้อผิดพลาดที่เกิดขึ้นจะถูกเขียนลงในไฟล์เพจจิ้ง คราวหน้า กำลังบูต Windowsการถ่ายโอนข้อมูลความผิดพลาดจะถูกสร้างขึ้นพร้อมกับข้อมูลการดีบักตามข้อมูลที่บันทึกไว้ รายการข้อผิดพลาดร้ายแรงถูกสร้างขึ้นในบันทึกเหตุการณ์ของระบบ

ความสนใจ!การถ่ายโอนข้อมูลความผิดพลาดจะไม่ถูกสร้างขึ้นถ้า ระบบย่อยของดิสก์หรือมีข้อผิดพลาดร้ายแรงเกิดขึ้นในระหว่างระยะเริ่มแรกของการบูต Windows

ประเภทของ Windows Crash Dumps

โดยใช้ตัวอย่างห้องผ่าตัดในปัจจุบัน ระบบวินโดวส์ 10 (วินโดวส์เซิร์ฟเวอร์ 2016) ให้พิจารณาประเภทหลักของดัมพ์หน่วยความจำที่ระบบสามารถสร้างได้:

  • การถ่ายโอนข้อมูลหน่วยความจำขนาดเล็ก(256 กิโลไบต์) ไฟล์ประเภทนี้ประกอบด้วยข้อมูลจำนวนน้อยที่สุด ประกอบด้วยข้อความแสดงข้อผิดพลาด BSOD ข้อมูลเกี่ยวกับไดรเวอร์ กระบวนการที่ใช้งานอยู่ ณ เวลาที่เกิดการขัดข้อง และกระบวนการหรือเธรดเคอร์เนลใดที่ทำให้เกิดข้อขัดข้อง
  • ดัมพ์หน่วยความจำเคอร์เนล. โดยทั่วไปแล้วจะมีขนาดเล็ก — หนึ่งในสามของขนาดหน่วยความจำกายภาพ ดัมพ์หน่วยความจำเคอร์เนลมีรายละเอียดมากกว่าดัมพ์ขนาดเล็ก ประกอบด้วยข้อมูลเกี่ยวกับไดรเวอร์และโปรแกรมโหมดเคอร์เนล รวมถึงหน่วยความจำที่จัดสรรให้กับเคอร์เนล Windows และ Hardware Abstraction Layer (HAL) และหน่วยความจำที่จัดสรรให้กับไดรเวอร์และโปรแกรมโหมดเคอร์เนลอื่นๆ
  • ถ่ายโอนข้อมูลหน่วยความจำให้เสร็จสมบูรณ์. ขนาดใหญ่ที่สุดและต้องใช้หน่วยความจำเท่ากับ RAM ของระบบของคุณบวก 1MB Windows ที่จำเป็นเพื่อสร้างไฟล์นี้
  • ดัมพ์หน่วยความจำอัตโนมัติ. สอดคล้องกับการถ่ายโอนข้อมูลหน่วยความจำเคอร์เนลในแง่ของข้อมูล ข้อแตกต่างเพียงอย่างเดียวคือใช้พื้นที่เท่าใดในการสร้างไฟล์ดัมพ์ ไฟล์ประเภทนี้ไม่มีอยู่ใน Windows 7 แต่ถูกเพิ่มเข้ามาใน Windows 8
  • ดัมพ์หน่วยความจำที่ใช้งานอยู่. ประเภทนี้กำจัดองค์ประกอบที่ไม่สามารถระบุสาเหตุของความล้มเหลวของระบบได้ สิ่งนี้ถูกเพิ่มลงใน Windows 10 และมีประโยชน์อย่างยิ่งหากคุณใช้ เครื่องเสมือนหรือหากระบบของคุณเป็นโฮสต์ Hyper-V

จะเปิดใช้งานการดัมพ์หน่วยความจำใน Windows ได้อย่างไร?

ใช้ Win+Pause เปิดหน้าต่างการตั้งค่าระบบ เลือก " การตั้งค่าระบบขั้นสูง"(การตั้งค่าระบบขั้นสูง). ใน " นอกจากนี้" (ขั้นสูง) ส่วน "" (การเริ่มต้นและการกู้คืน) คลิกปุ่ม " ตัวเลือก"(การตั้งค่า). ในหน้าต่างที่เปิดขึ้น ให้กำหนดค่าการดำเนินการที่จะดำเนินการเมื่อระบบล้มเหลว ตรวจสอบ " บันทึกเหตุการณ์ลงในบันทึกของระบบ" (เขียนเหตุการณ์ลงในบันทึกของระบบ) เลือกประเภทของดัมพ์ที่ควรสร้างเมื่อระบบขัดข้อง หากในช่องทำเครื่องหมาย " แทนที่ไฟล์ดัมพ์ที่มีอยู่"ทำเครื่องหมายในช่อง (เขียนทับไฟล์ที่มีอยู่) ไฟล์จะถูกเขียนทับทุกครั้งที่เกิดข้อผิดพลาด เป็นการดีกว่าที่จะยกเลิกการเลือกช่องนี้ จากนั้นคุณจะมีข้อมูลเพิ่มเติมสำหรับการวิเคราะห์ ปิดใช้งานการรีสตาร์ทอัตโนมัติด้วย

ในกรณีส่วนใหญ่ การถ่ายโอนข้อมูลหน่วยความจำขนาดเล็กจะเพียงพอที่จะวิเคราะห์สาเหตุของ BSOD

ขณะนี้ เมื่อเกิด BSOD คุณสามารถวิเคราะห์ไฟล์ดัมพ์และค้นหาสาเหตุของความล้มเหลวได้ ดัมพ์ขนาดเล็กจะถูกบันทึกในโฟลเดอร์ %systemroot%\minidump ตามค่าเริ่มต้น หากต้องการวิเคราะห์ไฟล์ดัมพ์ขอแนะนำให้ใช้โปรแกรม WinDBG(ดีบักเกอร์เคอร์เนลของ Microsoft).

การติดตั้ง WinDBG บน Windows

คุณประโยชน์ WinDBGรวมอยู่ใน " SDK ของ Windows 10"(Windows 10 SDK) .

ไฟล์นี้เรียกว่า winsdksetup.exe, ขนาด 1.3 MB.

เรียกใช้การติดตั้งและเลือกสิ่งที่คุณต้องการทำ - ติดตั้งแพ็คเกจบนคอมพิวเตอร์เครื่องนี้หรือดาวน์โหลดเพื่อติดตั้งบนคอมพิวเตอร์เครื่องอื่น มาติดตั้งแพ็คเกจบนเครื่องคอมพิวเตอร์กันดีกว่า

คุณสามารถติดตั้งแพ็คเกจทั้งหมดได้ แต่หากต้องการติดตั้งเฉพาะเครื่องมือแก้ไขจุดบกพร่อง ให้เลือก การดีบัก เครื่องมือสำหรับหน้าต่าง.

หลังการติดตั้ง คุณจะพบทางลัด WinDBG ได้ในเมนูเริ่ม

การตั้งค่าการเชื่อมโยงของไฟล์ .dmp กับ WinDBG

หากต้องการเปิดไฟล์ดัมพ์ด้วยการคลิกง่ายๆ ให้แมปส่วนขยาย .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

สัญลักษณ์การดีบัก (สัญลักษณ์การดีบักหรือไฟล์สัญลักษณ์) คือกลุ่มข้อมูลที่สร้างขึ้นระหว่างการคอมไพล์โปรแกรมร่วมกับไฟล์ปฏิบัติการ บล็อกข้อมูลดังกล่าวประกอบด้วยข้อมูลเกี่ยวกับชื่อตัวแปร ที่เรียกว่าฟังก์ชัน ไลบรารี ฯลฯ ข้อมูลนี้ไม่จำเป็นเมื่อรันโปรแกรม แต่จะมีประโยชน์เมื่อทำการดีบั๊ก ส่วนประกอบของ Microsoft ได้รับการคอมไพล์ด้วยสัญลักษณ์ที่แจกจ่ายผ่าน Microsoft Symbol Server

กำหนดค่า WinDBG เป็น การใช้งานไมโครซอฟต์เซิร์ฟเวอร์สัญลักษณ์:

  • เปิด WinDBG;
  • ไปที่เมนู ไฟล์ –> เส้นทางไฟล์สัญลักษณ์
  • เขียนบรรทัดที่มี URL สำหรับดาวน์โหลดสัญลักษณ์การดีบักจากเว็บไซต์ Microsoft และโฟลเดอร์สำหรับบันทึกแคช: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/สัญลักษณ์s ในตัวอย่าง แคชจะถูกดาวน์โหลด ไปยังโฟลเดอร์ E:\Sym_WinDBG คุณสามารถระบุรายการใดก็ได้
  • อย่าลืมบันทึกการเปลี่ยนแปลงเมนู ไฟล์–>บันทึกพื้นที่ทำงาน;

WinDBG จะค้นหาสัญลักษณ์ในโฟลเดอร์ในเครื่อง และหากไม่พบสัญลักษณ์ที่จำเป็น มันจะดาวน์โหลดสัญลักษณ์จากไซต์ที่ระบุโดยอัตโนมัติ หากคุณต้องการเพิ่มโฟลเดอร์สัญลักษณ์ของคุณเอง คุณสามารถทำได้ดังนี้:

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/สัญลักษณ์;c:\สัญลักษณ์

หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ต ให้ดาวน์โหลดแพ็คเกจสัญลักษณ์จากทรัพยากร Windows Symbol Package ก่อน

การวิเคราะห์ Crash Dump ใน WinDBG

ดีบักเกอร์ WinDBG จะเปิดไฟล์ดัมพ์และดาวน์โหลดสัญลักษณ์ที่จำเป็นสำหรับการดีบักจากโฟลเดอร์ในเครื่องหรือจากอินเทอร์เน็ต คุณไม่สามารถใช้ WinDBG ในระหว่างกระบวนการนี้ ที่ด้านล่างของหน้าต่าง (ในบรรทัดคำสั่งดีบักเกอร์) ข้อความจะปรากฏขึ้น ไม่ได้เชื่อมต่อดีบั๊ก

คำสั่งจะถูกป้อนลงในบรรทัดคำสั่งซึ่งอยู่ที่ด้านล่างของหน้าต่าง

สิ่งสำคัญที่สุดที่คุณต้องใส่ใจคือรหัสข้อผิดพลาดซึ่งจะระบุไว้เสมอ ค่าเลขฐานสิบหกและดูเหมือนว่า 0xXXXXXXXXX(ระบุไว้ในตัวเลือกใดตัวเลือกหนึ่ง - STOP: , 07/02/2019 0008F, 0x8F) ในตัวอย่างของเรา รหัสข้อผิดพลาดคือ 0x139

ดีบักเกอร์เสนอให้รันคำสั่ง!analyze -v เพียงเลื่อนเมาส์ไปเหนือลิงก์แล้วคลิก คำสั่งนี้มีไว้เพื่ออะไร?

  • จะทำการวิเคราะห์ดัมพ์หน่วยความจำเบื้องต้นและจัดเตรียม รายละเอียดข้อมูลเพื่อเริ่มการวิเคราะห์
  • คำสั่งนี้จะแสดงรหัส STOP และชื่อสัญลักษณ์ของข้อผิดพลาด
  • มันแสดงสแต็กของการเรียกคำสั่งที่นำไปสู่ความผิดพลาด
  • นอกจากนี้ ที่อยู่ IP ข้อผิดพลาดของกระบวนการและการลงทะเบียนจะแสดงอยู่ที่นี่
  • ทีมงานสามารถให้คำแนะนำพร้อมแก้ไขปัญหาได้

ประเด็นหลักที่คุณควรคำนึงถึงเมื่อวิเคราะห์หลังจากดำเนินการคำสั่ง!วิเคราะห์ –v (รายการไม่สมบูรณ์)

1: kd> !วิเคราะห์ -v


* *
* การวิเคราะห์ข้อผิดพลาด *
* *
*****************************************************************************
ชื่อเชิงสัญลักษณ์ของข้อผิดพลาด STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
คำอธิบายของข้อผิดพลาด (ส่วนประกอบเคอร์เนลทำให้โครงสร้างข้อมูลที่สำคัญเสียหาย ความเสียหายนี้อาจทำให้ผู้โจมตีเข้าควบคุมเครื่องนี้ได้):

ส่วนประกอบเคอร์เนลทำให้โครงสร้างข้อมูลที่สำคัญเสียหาย ความเสียหายอาจทำให้ผู้ใช้ที่เป็นอันตรายสามารถควบคุมเครื่องนี้ได้
อาร์กิวเมนต์ข้อผิดพลาด:

ข้อโต้แย้ง:
Arg1: 0000000000000003, A LIST_ENTRY ได้รับความเสียหาย (เช่น ลบสองครั้ง)
Arg2: ffffd0003a20d5d0 ที่อยู่ของเฟรมกับดักสำหรับข้อยกเว้นที่ทำให้เกิดการตรวจสอบจุดบกพร่อง
Arg3: ffffd0003a20d528 ที่อยู่ของบันทึกข้อยกเว้นสำหรับข้อยกเว้นที่ทำให้เกิดการตรวจสอบจุดบกพร่อง
Arg4: 0000000000000000 สงวนไว้
รายละเอียดการดีบัก:
------------------

ตัวนับจะแสดงจำนวนครั้งที่ระบบขัดข้องด้วยข้อผิดพลาดที่คล้ายกัน:

ลูกค้า_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

รหัสข้อผิดพลาด STOP ในรูปแบบย่อ:

BUGCHECK_STR: 0x139

กระบวนการที่เกิดความล้มเหลว (ไม่จำเป็นต้องเป็นสาเหตุของข้อผิดพลาด เพียงในขณะที่เกิดความล้มเหลว กระบวนการนี้ทำงานในหน่วยความจำ):

กระบวนการ_NAME: sqlservr.exe

คำอธิบายรหัสข้อผิดพลาด: ระบบตรวจพบสแต็กบัฟเฟอร์ล้นในแอปพลิเคชันนี้ ซึ่งอาจทำให้ผู้โจมตีเข้าควบคุมแอปพลิเคชันนี้ได้

ข้อผิดพลาด_รหัส: (NTSTATUS) 0xc0000409 - ระบบตรวจพบการโอเวอร์รันของบัฟเฟอร์แบบสแต็กในแอปพลิเคชันนี้ การบุกรุกมากเกินไปอาจทำให้ผู้ใช้ที่เป็นอันตรายสามารถควบคุมแอปพลิเคชันนี้ได้
ข้อยกเว้น_CODE: (NTSTATUS) 0xc0000409 - ระบบตรวจพบการโอเวอร์รันของบัฟเฟอร์แบบสแต็กในแอปพลิเคชันนี้ การบุกรุกมากเกินไปอาจทำให้ผู้ใช้ที่เป็นอันตรายสามารถควบคุมแอปพลิเคชันนี้ได้

การโทรครั้งสุดท้ายบนสแต็ก:

LAST_CONTROL_TRANSFER: จาก fffff8040117d6a9 ถึง fffff8040116b0a0

โทรสแต็กในเวลาที่ล้มเหลว:

สแต็ค_ข้อความ:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528: nt!KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiFastFailDispatch+0xd0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9: nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: nt! ?? ::FNODOBFM::`สตริง"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600: nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 fffff804`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+0x1 3
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007ffb`47530 7ดา

ส่วนรหัสที่เกิดข้อผิดพลาด:

ติดตาม_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov ไบต์ ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: เจ้าของเครื่องจักร

ชื่อของโมดูลในตารางอ็อบเจ็กต์เคอร์เนล หากเครื่องวิเคราะห์สามารถตรวจพบไดรเวอร์ที่มีปัญหาได้ ชื่อจะแสดงในช่อง MODULE_NAME และ IMAGE_NAME:

MODULE_NAME:ไม่ใช่
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

เปิดคุณสมบัติของไฟล์ไดรเวอร์และตรวจสอบเวอร์ชัน ในกรณีส่วนใหญ่ ปัญหาเกี่ยวกับไดรเวอร์จะแก้ไขได้โดยการอัพเดต

ข้อผิดพลาดมักเกิดขึ้นใน Windows OS แม้ในกรณีที่ระบบ "สะอาด" ก็ตาม หากข้อผิดพลาดทั่วไปของโปรแกรมสามารถแก้ไขได้ (ข้อความเกี่ยวกับส่วนประกอบที่หายไปปรากฏขึ้น) ข้อผิดพลาดร้ายแรงจะแก้ไขได้ยากกว่ามาก

การถ่ายโอนข้อมูลหน่วยความจำใน Windows คืออะไร

เพื่อแก้ไขปัญหาเกี่ยวกับระบบ โดยปกติจะใช้ดัมพ์หน่วยความจำขัดข้อง - นี่คือรูปถ่ายบางส่วนหรือทั้งหมดของ RAM และวางไว้บนสื่อที่ไม่ลบเลือน ( ฮาร์ดดิส). กล่าวอีกนัยหนึ่ง เนื้อหาของ RAM จะถูกคัดลอกทั้งหมดหรือบางส่วนไปยังสื่อ และผู้ใช้สามารถวิเคราะห์การถ่ายโอนข้อมูลหน่วยความจำได้

มีดัมพ์หน่วยความจำหลายประเภท:

การถ่ายโอนข้อมูลขนาดเล็ก(Small Memory Dump) – บันทึก RAM ขั้นต่ำซึ่งประกอบด้วยข้อมูลเกี่ยวกับข้อผิดพลาดร้ายแรง (BSoD) และส่วนประกอบที่โหลดระหว่างการทำงานของระบบ เช่น ไดรเวอร์ โปรแกรม มินิดัมพ์ถูกเก็บไว้ในพาธ C:\Windows\Minidump

การถ่ายโอนข้อมูลเต็ม(Complete Memory Dump) – บันทึก RAM เต็มจำนวน ซึ่งหมายความว่าขนาดไฟล์จะเท่ากับจำนวน RAM หากมีพื้นที่ดิสก์น้อย การบันทึกเช่น 32 GB จะเป็นปัญหา ยังมีปัญหาในการสร้างไฟล์ดัมพ์หน่วยความจำที่มีขนาดใหญ่กว่า 4 GB ประเภทนี้ใช้น้อยมาก เก็บไว้ที่ C:\Windows\MEMORY.DMP

การถ่ายโอนข้อมูล หน่วยความจำเคอร์เนล– บันทึกเฉพาะข้อมูลที่เกี่ยวข้องกับแกนระบบเท่านั้น

เมื่อผู้ใช้วิเคราะห์ข้อผิดพลาด เขาเพียงแต่ต้องใช้ minidamp (small dump) แต่ก่อนหน้านี้จะต้องเปิดใช้งานไม่เช่นนั้นปัญหาจะไม่ได้รับการยอมรับ นอกจากนี้ เพื่อให้ระบุข้อขัดข้องได้อย่างมีประสิทธิภาพยิ่งขึ้น ควรใช้สแน็ปช็อตหน่วยความจำเต็ม

ข้อมูลในรีจิสทรี

หากมองเข้าไป รีจิสทรีของ Windowsจากนั้นคุณจะพบพารามิเตอร์รูปภาพที่มีประโยชน์ คลิกคีย์ผสม Win+R แล้วป้อนคำสั่ง ลงทะเบียนใหม่และเปิดสาขาดังต่อไปนี้

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

ในสาขานี้ ผู้ใช้จะพบพารามิเตอร์ต่อไปนี้:

  • รีบูตอัตโนมัติ- เปิดหรือปิดการรีบูตหลังจากสร้าง Blue Screen of Death (BSoD)
  • ดัมพ์ไฟล์– ชื่อของประเภทดัมพ์และที่ตั้ง
  • เปิดใช้งาน CrashDump แล้ว- ตัวเลข สร้างไฟล์ตัวอย่างเช่น หมายเลข 0 – ไม่มีการสร้างดัมพ์ 1 – สร้างการถ่ายโอนข้อมูลแบบเต็ม 2 – การสร้างดัมพ์หลัก 3 – สร้างการถ่ายโอนข้อมูลขนาดเล็ก
  • ตัวกรองการถ่ายโอนข้อมูล– ตัวเลือกนี้ช่วยให้คุณสามารถเพิ่มฟังก์ชันใหม่ก่อนที่จะสร้างสแน็ปช็อต เช่น การเข้ารหัสไฟล์
  • มินิดัมพ์Dir– ชื่อกองขยะขนาดเล็กและที่ตั้ง
  • บันทึกเหตุการณ์– การเปิดใช้งานข้อมูลการบันทึกในบันทึกของระบบ
  • Minidumpsนับ– กำหนดจำนวนดัมพ์ขนาดเล็กที่จะสร้าง (เกินจำนวนนี้จะทำลายไฟล์เก่าและแทนที่)
  • เขียนทับ– ฟังก์ชั่นสำหรับการถ่ายโอนข้อมูลแบบเต็มหรือระบบ เมื่อสร้างรูปภาพใหม่ รูปภาพก่อนหน้าจะถูกแทนที่ด้วยรูปภาพใหม่เสมอ
  • ไฟล์ DumpFile เฉพาะ- การสร้าง ไฟล์ทางเลือกภาพและบอกเส้นทางของมัน
  • ละเว้นPagefileSize– ใช้สำหรับตำแหน่งสแน็ปช็อตชั่วคราวโดยไม่ต้องใช้ไฟล์สลับ

มันทำงานอย่างไร

หากเกิดความล้มเหลว ระบบจะหยุดการทำงานโดยสมบูรณ์ และหากการดัมพ์ทำงานอยู่ ระบบจะเขียนลงในไฟล์ที่วางอยู่บนดิสก์ ข้อมูลเกี่ยวกับปัญหาที่เกิดขึ้น. หากมีบางอย่างเกิดขึ้นกับส่วนประกอบทางกายภาพ รหัสฉุกเฉินจะทำงาน และฮาร์ดแวร์ที่ล้มเหลวจะทำการเปลี่ยนแปลงบางอย่าง ซึ่งจะแสดงให้เห็นในภาพรวมอย่างแน่นอน

โดยทั่วไปไฟล์จะถูกจัดเก็บไว้ในบล็อกที่จัดสรรไว้สำหรับไฟล์สลับ ฮาร์ดไดรฟ์หลังจากที่ BSoD ปรากฏขึ้น ไฟล์จะถูกเขียนทับในรูปแบบที่ผู้ใช้กำหนดค่าเอง (ดัมพ์ขนาดเล็ก เต็ม หรือคอร์) แม้ว่าในระบบปฏิบัติการสมัยใหม่ การมีส่วนร่วมของไฟล์เพจจิ้งก็ไม่จำเป็น

วิธีเปิดใช้งานการดัมพ์

ใน วินโดว 7:

ใน วินโดวส์ 8 และ 10:

กระบวนการนี้คล้ายกันเล็กน้อย คุณสามารถเข้าถึงข้อมูลระบบได้ในลักษณะเดียวกับใน Windows 7 ใน "สิบ" อย่าลืมเปิด " คอมพิวเตอร์เครื่องนี้", คลิกที่ ที่ว่างปุ่มเมาส์ขวาแล้วเลือก “ คุณสมบัติ" อีกวิธีหนึ่งในการเข้าถึงคือผ่านแผงควบคุม

ตัวเลือกที่สองสำหรับ วิ10:


ควรสังเกตว่าในแบบใหม่ เวอร์ชันของ Windowsมีจุดใหม่ 10 จุดที่ไม่อยู่ใน "เจ็ด":

  • การถ่ายโอนข้อมูลขนาดเล็กหน่วยความจำ 256 KB - ข้อมูลความล้มเหลวขั้นต่ำ
  • การถ่ายโอนข้อมูลที่ใช้งานอยู่- ปรากฏในเวอร์ชันที่ 10 ของระบบและบันทึกเฉพาะหน่วยความจำที่ใช้งานอยู่ของคอมพิวเตอร์ เคอร์เนลของระบบ และผู้ใช้ แนะนำให้ใช้บนเซิร์ฟเวอร์

วิธีการลบดัมพ์

เพียงไปที่ไดเร็กทอรีที่เก็บสแน็ปช็อตหน่วยความจำแล้วลบออก แต่มีวิธีอื่นในการลบออก - โดยใช้ยูทิลิตี้ Disk Cleanup:

หากไม่พบรายการ ดัมพ์อาจไม่ได้เปิดใช้งาน

แม้ว่าคุณจะเคยเปิดใช้งานแล้ว แต่ยูทิลิตี้การเพิ่มประสิทธิภาพระบบบางอย่างที่คุณใช้ก็สามารถทำได้ง่าย ปิดการใช้งานฟังก์ชั่นบางอย่าง. หลายๆ อย่างมักจะดับลงระหว่างการใช้งาน ไดรฟ์ SSDเนื่องจากขั้นตอนการอ่านและเขียนซ้ำ ๆ ส่งผลเสียต่อสุขภาพของดิสก์นี้อย่างมาก

การวิเคราะห์ดัมพ์หน่วยความจำโดยใช้ WinDbg

ดาวน์โหลดจากเว็บไซต์ทางการของ Microsoft โปรแกรมนี้ในขั้นตอนที่ 2 ซึ่งมีคำอธิบายว่า “ การติดตั้งWDK" - https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

ในการทำงานกับโปรแกรมคุณจะต้องมีแพ็คเกจพิเศษของสัญลักษณ์การดีบัก มันถูกเรียกว่า สัญลักษณ์การดีบักก่อนหน้านี้สามารถดาวน์โหลดได้จากเว็บไซต์ Microsoft แต่ตอนนี้พวกเขาละทิ้งแนวคิดนี้และจะต้องใช้ฟังก์ชันนี้ โปรแกรมไฟล์ — « เส้นทางไฟล์สัญลักษณ์" โดยที่คุณควรป้อนบรรทัดต่อไปนี้แล้วคลิกตกลง:

ตั้งค่า _NT_SYMBOL_PATH=srv*DownstreamStore*https://msdl.microsoft.com/download/สัญลักษณ์s

หากไม่ได้ผล ให้ลองใช้คำสั่งนี้:

SRV*%systemroot%\สัญลักษณ์*http://msdl.microsoft.com/download/สัญลักษณ์

คลิก "ไฟล์" อีกครั้งและเลือกตัวเลือก "บันทึกพื้นที่ทำงาน"

ยูทิลิตี้ได้รับการกำหนดค่าแล้ว สิ่งที่เหลืออยู่คือการระบุเส้นทางไปยังไฟล์ดัมพ์หน่วยความจำ โดยคลิกไฟล์แล้วคลิกตัวเลือก “ โอปากกาชนการถ่ายโอนข้อมูล" ตำแหน่งของถังขยะทั้งหมดระบุไว้ที่ตอนต้นของบทความ

หลังจากเลือกแล้ว การวิเคราะห์จะสิ้นสุดและองค์ประกอบที่เป็นปัญหาจะถูกไฮไลต์โดยอัตโนมัติ หากต้องการข้อมูลเพิ่มเติมในหน้าต่างเดียวกัน คุณสามารถป้อนคำสั่งต่อไปนี้: !วิเคราะห์ –v

วิเคราะห์ด้วย BlueScreenView

คุณสามารถดาวน์โหลดเครื่องมือได้ฟรีจากไซต์นี้ - http://www.nirsoft.net/utils/blue_screen_view.html การติดตั้งไม่จำเป็นต้องมีทักษะใดๆ ใช้งานบน Windows 7 ขึ้นไปเท่านั้น

เราเปิดตัวและกำหนดค่า คลิก “ตัวเลือก” – “ ตัวเลือกพิเศษ"(ตัวเลือกขั้นสูง). เลือกรายการแรก " โหลด MiniDumps จากโฟลเดอร์นี้"และระบุไดเร็กทอรี - C:\WINDOWS\Minidump. แม้ว่าคุณจะสามารถคลิกปุ่ม "ค่าเริ่มต้น" ได้ คลิกตกลง

ไฟล์ดัมพ์ควรปรากฏในหน้าต่างหลัก อาจเป็นอย่างใดอย่างหนึ่งหรือหลายอย่างก็ได้ หากต้องการเปิดเพียงคลิกด้วยเมาส์

ด้านล่างของหน้าต่างจะแสดงส่วนประกอบที่ทำงานอยู่ในขณะที่เกิดความล้มเหลว ผู้รับผิดชอบต่ออุบัติเหตุจะถูกเน้นด้วยสีแดง

ตอนนี้คลิก "ไฟล์" และเลือกตัวอย่างเช่นรายการ " ค้นหาในไปรหัสข้อผิดพลาด ogle + ไดรเวอร์" หากพบ ไดรเวอร์ที่จำเป็นติดตั้งและรีสตาร์ทคอมพิวเตอร์ของคุณ บางทีข้อผิดพลาดจะหายไป