การถ่ายโอนข้อมูลความผิดพลาดของ 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 |
|
|
หลังจากเสร็จสิ้นการปรับแต่งทั้งหมดแล้ว หลังจากแต่ละ BSoD ไฟล์ที่มีนามสกุล .dmp จะถูกบันทึกไว้ในโฟลเดอร์ C:\WINDOWS\Minidump ฉันแนะนำให้คุณอ่านเนื้อหา "" คุณยังสามารถทำเครื่องหมายในช่อง “ แทนที่ไฟล์ดัมพ์ที่มีอยู่" ในกรณีนี้ ดัมพ์ข้อขัดข้องใหม่แต่ละรายการจะถูกเขียนทับอันเก่า ฉันไม่แนะนำให้เปิดใช้งานตัวเลือกนี้
การวิเคราะห์การถ่ายโอนข้อมูลข้อขัดข้องโดยใช้ BlueScreenView
ดังนั้นหลังจากการปรากฏตัว หน้าจอสีน้ำเงินเสียชีวิต ระบบได้บันทึกข้อมูลความผิดพลาดใหม่ เพื่อวิเคราะห์ดัมพ์ฉันแนะนำให้ใช้ โปรแกรมบลูสกรีนวิว. สามารถดาวน์โหลดได้ฟรี โปรแกรมนี้ค่อนข้างสะดวกและมีอินเทอร์เฟซที่ใช้งานง่าย หลังจากติดตั้งแล้ว สิ่งแรกที่คุณต้องทำคือระบุตำแหน่งสำหรับจัดเก็บหน่วยความจำดัมพ์บนระบบ โดยไปที่รายการเมนู “ ตัวเลือก” และเลือก “ ขั้นสูงตัวเลือก" เลือกปุ่มตัวเลือก “ โหลดจากที่กำลังติดตามมินิดัมพ์โฟลเดอร์” และระบุโฟลเดอร์ที่เก็บดัมพ์ หากไฟล์ถูกจัดเก็บไว้ในโฟลเดอร์ C:\WINDOWS\Minidump คุณสามารถคลิกปุ่ม “ ค่าเริ่มต้น" คลิกตกลงและไปที่อินเทอร์เฟซของโปรแกรม
โปรแกรมประกอบด้วยสามช่วงตึกหลัก:
- บล็อกเมนูหลักและแผงควบคุม
- บล็อกรายการดัมพ์ที่ขัดข้อง
- ขึ้นอยู่กับพารามิเตอร์ที่เลือก อาจมี:
- รายการไดรเวอร์ทั้งหมดใน 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 |
|
|
หลังจากเสร็จสิ้นการปรับแต่งทั้งหมดแล้ว หลังจากแต่ละ BSoD ไฟล์ที่มีนามสกุล .dmp จะถูกบันทึกไว้ในโฟลเดอร์ C:\WINDOWS\Minidump ฉันแนะนำให้คุณอ่านเนื้อหา "วิธีสร้างโฟลเดอร์" คุณยังสามารถทำเครื่องหมายในช่อง “ แทนที่ไฟล์ดัมพ์ที่มีอยู่" ในกรณีนี้ ดัมพ์ข้อขัดข้องใหม่แต่ละรายการจะถูกเขียนทับอันเก่า ฉันไม่แนะนำให้เปิดใช้งานตัวเลือกนี้
การวิเคราะห์ Crash Dump โดยใช้โปรแกรม BLUESCREENVIEW
ดังนั้น หลังจากที่หน้าจอสีน้ำเงินแห่งความตายปรากฏขึ้น ระบบจะบันทึกดัมพ์หน่วยความจำขัดข้องใหม่ เพื่อวิเคราะห์ดัมพ์ ฉันแนะนำให้ใช้โปรแกรม BlueScreenView สามารถดาวน์โหลดได้ฟรีที่นี่ โปรแกรมนี้ค่อนข้างสะดวกและมีอินเทอร์เฟซที่ใช้งานง่าย หลังจากติดตั้งแล้ว สิ่งแรกที่คุณต้องทำคือระบุตำแหน่งสำหรับจัดเก็บหน่วยความจำดัมพ์บนระบบ โดยไปที่รายการเมนู “ ตัวเลือก” และเลือก “ ขั้นสูงตัวเลือก" เลือกปุ่มตัวเลือก “ โหลดจากที่กำลังติดตามมินิดัมพ์โฟลเดอร์” และระบุโฟลเดอร์ที่เก็บดัมพ์ หากไฟล์ถูกจัดเก็บไว้ในโฟลเดอร์ C:\WINDOWS\Minidump คุณสามารถคลิกปุ่ม “ ค่าเริ่มต้น" คลิกตกลงและไปที่อินเทอร์เฟซของโปรแกรม
โปรแกรมประกอบด้วยสามช่วงตึกหลัก:
- บล็อกเมนูหลักและแผงควบคุม
- บล็อกรายการดัมพ์ที่ขัดข้อง
- ขึ้นอยู่กับพารามิเตอร์ที่เลือก อาจมี:
- รายการไดรเวอร์ทั้งหมดใน 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
- เปิด บรรทัดคำสั่งในฐานะผู้ดูแลระบบและรันคำสั่งสำหรับระบบ 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 - ด้วยเหตุนี้ ประเภทไฟล์: .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 + ไดรเวอร์" หากพบ ไดรเวอร์ที่จำเป็นติดตั้งและรีสตาร์ทคอมพิวเตอร์ของคุณ บางทีข้อผิดพลาดจะหายไป