Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

ใน Linux สถานการณ์แบบนี้เรียกว่าเคอร์เนลแพนิค ใน Windows เรียกว่า BSOD แต่มันมีค่าเท่ากัน:ข้อยกเว้นที่สำคัญและไม่สามารถกู้คืนได้ในแกนกลางของระบบ เคอร์เนล และไดรเวอร์ที่มาพร้อมกัน

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

ข้อมูลเบื้องต้น

หลังจากทำซีรีส์ที่ยาวเป็นพิเศษและเกินบรรยายเกี่ยวกับข้อขัดข้องของ Linux โดยเริ่มจากเครื่องมือการถ่ายโอนข้อมูลความผิดพลาดของเคอร์เนล ดำเนินการต่อด้วยการตั้งค่าบน openSUSE และ CentOS และปิดท้ายด้วยการวิเคราะห์เชิงลึก ฉันต้องการเสนอผู้ใช้ Windows ให้สั้นลงและ การวิเคราะห์ BSOD เวอร์ชันที่เกินบรรยาย มีสองเหตุผลสำหรับสิ่งนี้:หนึ่ง ฉันไม่สามารถลงลึกได้มากเท่าที่ฉันต้องการ เนื่องจากแหล่ง Windows ถูกปิด; สอง ฉันไม่เชี่ยวชาญในการเล่นน้ำในเคอร์เนลของ Windows เท่าที่ฉันใช้ Linux ไม่ว่าบทช่วยสอนนี้จะยังคงค่อนข้างเนิร์ดและเกินข้อกำหนด ความต้องการ หรือความต้องการของผู้ใช้ทั่วไป อย่างไรก็ตาม หากคุณต้องการเรียนรู้เพิ่มเติมเล็กน้อยเกี่ยวกับ Windows internals และรับทักษะใหม่ๆ ที่จะช่วยวินิจฉัยปัญหาของระบบหลัก คุณมาถูกที่แล้ว

ตอนนี้เรามาเริ่มกันเลย


สารบัญ


  1. คำถาม
    1. อะไรเป็นสาเหตุของ Blue Screen of Death ที่โจมตี?
  2. เปิดใช้งานการรวบรวม BSOD
  3. การรวบรวม BSOD
    1. ตัวตรวจสอบไดรเวอร์
  4. การวินิจฉัย BSOD
    1. แพ็คเกจสัญลักษณ์ Windows
    2. เครื่องมือวิเคราะห์ BSOD 1:WhoCrashed
    3. เครื่องมือวิเคราะห์ BSOD 2:Nirsoft
    4. เครื่องมือวิเคราะห์ BSOD 3:Windows Debugger (Windbg)
  5. ตัวอย่าง BSOD
    1. เริ่มต้น BSOD (โดยใช้ StartBlueScreen)
  6. การวิเคราะห์ BSOD
    1. ผลลัพธ์ WhoCrashed
    2. ผลลัพธ์ของ Nirsoft BlueScreenView
    3. ผลลัพธ์ Windows Debugger
    4. รับสัญลักษณ์ที่ถูกต้องทางออนไลน์!
    5. คำสั่งดีบักเกอร์และตัวเลือกอื่นๆ
    6. จะทำอย่างไรต่อไป
    7. ส่งข้อมูลเคอร์เนลดัมพ์สำหรับการวิเคราะห์
  7. สิ่งเพิ่มเติม
    1. การวินิจฉัยหน่วยความจำ
  8. เอกสารอ้างอิง
    1. วิธีใช้สัญลักษณ์ออนไลน์
    2. แหล่งข้อมูลที่เป็นประโยชน์อื่นๆ
  9. สรุป

คำถาม

ก่อนที่เราจะเจาะลึกถึงศัพท์แสงทางเทคโนโลยี เรามาตอบคำถามสองสามข้อเกี่ยวกับ BSOD กันก่อน

อะไรทำให้ Blue Screen of Death หยุดทำงาน

ไม่มีคำตอบง่ายๆ ผู้ใช้ Windows เป็นเวลานานจะได้เรียนรู้แล้วว่าบางคนพบ BSOD บ่อยมากในขณะที่บางคนไม่เห็นเลยในขณะที่พวกเขาทั้งหมดใช้ Windows เดียวกันเกือบทั้งหมด

ประสบการณ์ที่หลากหลายเกิดจากข้อเท็จจริงที่ว่า BSOD มักไม่เกิดจากส่วนประกอบของ Microsoft Windows ในขณะที่คนส่วนใหญ่ชอบโทษ Windows สำหรับการล่ม แต่บ่อยครั้งที่พวกเขาไม่ได้เกิดจากระบบปฏิบัติการเอง

ประสบการณ์ส่วนตัวของผมมีดังนี้

ในเครื่อง Windows สองเครื่องที่มีเวลาทำงานทั้งหมด 10 ปี ฉันพบ BSOD เพียงสองครั้ง หนึ่งเครื่องในแต่ละโฮสต์ อุบัติเหตุทั้งสองครั้งเกิดขึ้นห่างกันไม่ถึงหนึ่งชั่วโมง

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

สิ่งที่เกิดขึ้นจริงคือกราฟิกการ์ดร้อนเกินไป ง่ายๆอย่างนั้น เป็นวันที่อากาศร้อนจัด และกราฟิกการ์ดมีอุณหภูมิเกินช่วงอุณหภูมิปกติ

กรณีอื่นๆ ของ BSOD ที่ฉันพบในเครื่องอื่นๆ นั้นเกี่ยวข้องกับไดรเวอร์ที่ไม่ดี ทำงานผิดปกติ หรือบั๊กกี้ซึ่งติดตั้งโดยซอฟต์แวร์หรือฮาร์ดแวร์ รวมทั้งการ์ดไร้สาย โปรแกรมรักษาความปลอดภัย และอื่นๆ ที่คล้ายคลึงกัน ฉันไม่เคยเห็นส่วนประกอบหลักของ Windows ตัวใดตัวหนึ่งส่งเสียงดัง เพื่อชี้แจงว่าเรากำลังพูดถึงการใช้งานที่บ้านที่นี่

ตอนนี้เรารู้แล้วว่าเรากำลังพูดถึงอะไร มาเริ่มวิทยาศาสตร์กัน

เปิดใช้งานการรวบรวม BSOD

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

คุณสามารถกำหนดค่าคอลเลกชั่น BSOD ได้ด้วยการคลิกขวาที่ Computer ในเมนู Explorer, Properties, System, Advanced, Startup และ Recovery ในครึ่งล่าง ภายใต้ ความล้มเหลวของระบบ คุณต้องกำหนดค่าพารามิเตอร์

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

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

คุณมีตัวเลือกต่อไปนี้:

การถ่ายโอนข้อมูลหน่วยความจำขนาดเล็ก - เฉพาะไฟล์พื้นฐานที่มีข้อมูลข้อขัดข้อง สิ่งนี้มีค่าจำกัด เนื่องจากคุณไม่มีร่องรอยของไฟล์ปฏิบัติการและ DLL ที่โหลดลงในหน่วยความจำ ใน Windows XP ไฟล์นี้มีขนาด 64K บน Windows 7 คือ 128K

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

ทำการถ่ายโอนข้อมูลหน่วยความจำให้สมบูรณ์ - สิ่งนี้จะถ่ายโอนเนื้อหาทั้งหมดของ RAM

เมื่อคุณพอใจกับการตั้งค่าแล้ว ให้คลิก ตกลง ตอนนี้เราสามารถเริ่มวิเคราะห์

การรวบรวม BSOD

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

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

ตัวตรวจสอบไดรเวอร์

หากคุณกำลังพยายามแก้ไขปัญหา BSOD คุณควรใช้ Driver Verifier

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

หากต้องการเริ่มใช้ Verifier ให้ค้นหาไฟล์ปฏิบัติการและเริ่มต้น บน Windows XP ให้คลิก Start> Run> Verifier บน Windows 7 พิมพ์ Verifier ในช่องค้นหาแบบอินไลน์แล้วกด Enter

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

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

นอกจากนี้ หากเครื่องของคุณไม่สามารถบูตเข้าสู่เดสก์ท็อปได้เนื่องจาก Verifier คุณสามารถปิดใช้งานเครื่องมือนี้ได้โดยเปิดใช้การกำหนดค่า Last Known Good หรือบูตเข้าสู่เซฟโหมด

ตกลง รวบรวม minidumps มาวิเคราะห์กัน

การวินิจฉัย BSOD

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

แพ็คเกจสัญลักษณ์ Windows

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

ฉันจะแสดงให้คุณเห็นตัวอย่างในภายหลัง

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

เครื่องมือวิเคราะห์ BSOD 1:WhoCrashed

WhoCrashed เป็นเครื่องมือที่เรียบง่ายและมีประสิทธิภาพที่ให้คุณค้นหาว่าไดรเวอร์ใดที่ทำให้เครื่องพัง มันใช้งานง่ายมากและไม่ต้องการความเชี่ยวชาญ แม้ว่าการวิเคราะห์ที่เหมาะสมจะทำ เครื่องมือนี้จำเป็นต้องติดตั้ง Windows Debugger

เครื่องมือวิเคราะห์ BSOD 2:Nirsoft

หากคุณค่อนข้างซีเรียสเกี่ยวกับ Windows คุณควรเคยได้ยินเกี่ยวกับเครื่องมือ Nirsoft ซึ่งเป็นคอลเล็กชันยูทิลิตี้ Windows อเนกประสงค์ที่พัฒนาและดูแลโดย Nir Sofer โดยเฉพาะอย่างยิ่ง เราต้องการเครื่องมือวินิจฉัยที่เรียกว่า BlueScreenView ซึ่งใช้สำหรับวิเคราะห์การถ่ายโอนข้อมูลหน่วยความจำเคอร์เนลของ Windows เหนือสิ่งอื่นใด เครื่องมือเล็ก ๆ ที่มีประโยชน์นี้รวมอยู่ในกล่องเครื่องมือสไตล์มีด Swiss Army อันทรงพลังที่เรียกว่า Nirlauncher ซึ่งเป็นชุดของแอปพลิเคชั่นมากกว่าร้อยรายการที่พัฒนาโดย Nir เว็บไซต์ของ Nir ไม่ได้อยู่ในรายการที่ยิ่งใหญ่ที่สุดของฉันโดยไม่มีเหตุผล

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

นอกจากนี้ Nir Sofer ยังมีเครื่องมือสำหรับการเริ่มต้น BSOD ดังนั้นคุณจึงสามารถจำลองการขัดข้องได้ เครื่องมือนี้เรียกว่า StartBlueScreen และรวมอยู่ในแพ็คเกจ Nirlauncher สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Nirlauncher คุณอาจต้องการอ่านรีวิวซอฟต์แวร์ของฉัน

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

เราจะพูดถึงทั้งสองโปรแกรมนี้เร็วๆ นี้

เครื่องมือวิเคราะห์ BSOD 3:Windows Debugger (Windbg)

Windows Debugger เป็นเครื่องมืออเนกประสงค์ ซึ่งคุณสามารถใช้เพื่อแก้ไขปัญหาต่างๆ ได้ทุกชนิด รวมถึงไดรเวอร์ แอปพลิเคชัน และบริการบนระบบ Windows

Windows Debugger รวมอยู่ใน Windows SDK

ใน Windows 7 เมื่อติดตั้ง Debugger คุณอาจได้รับข้อผิดพลาด .NET Framework 4 คุณสามารถเพิกเฉยได้ ตราบใดที่คุณไม่ได้พยายามทำงานกับแอปพลิเคชันที่พัฒนาใน .NET Framework ในกรณีของเรา เราสามารถดำเนินการได้อย่างปลอดภัย

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

ในเมนูการติดตั้ง คุณสามารถเลือกส่วนประกอบที่คุณต้องการได้ เราต้องการ Debugging Tools สำหรับ Windows ภายใต้ Common Utilities

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

ตัวอย่าง BSOD

เริ่มต้น BSOD (โดยใช้ StartBlueScreen)

เพื่อให้เครื่องมือเหล่านี้ทำงานได้ เราจำเป็นต้องมี BSOD การรัน Verifier บนเครื่อง Windows 7 ของฉันไม่ก่อให้เกิดผลเสียใดๆ ดังนั้นเราจะต้องลองใช้เครื่องมือ NirSoft StartBlueScreen ซึ่งฉันได้กล่าวถึงก่อนหน้านี้

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

StartBlueScreen เป็นเครื่องมือบรรทัดคำสั่ง จำเป็นต้องเรียกใช้ด้วยพารามิเตอร์จำนวนหนึ่ง ซึ่งจะทำให้เกิด BSOD ในการดำเนินการ BSOD คุณต้องใช้บัญชีผู้ดูแลระบบในกล่อง Windows ของคุณ

ใน Windows 7 การเปิดใช้งานบัญชีผู้ดูแลระบบที่ซ่อนอยู่อาจยุ่งยากเล็กน้อย แต่เราจะมีบทช่วยสอนแยกต่างหากในเร็วๆ นี้ อันที่จริง การทำสิ่งเดียวกันบน Windows XP ก็ไม่ใช่เรื่องเล็กน้อยเช่นกัน เราจะหารือเรื่องนี้แยกกันอีกครั้ง

เมื่อเข้าสู่ระบบในฐานะผู้ดูแลระบบ ให้เรียกใช้ StartBlueScreen จากบรรทัดคำสั่ง Nir Sofer แสดงตัวอย่างจำนวนหนึ่งบนเว็บไซต์ของเขา ดังนั้นเราจะใช้หนึ่งในตัวอย่างเหล่านี้:

StartBlueScreen.exe 0x12 0 0 0 0 

สิ่งนี้คล้ายกับการรัน echo c> /proc/sysrq-trigger บน Linux โดยเปิดใช้งานคำขอระบบ หลังจากนั้นไม่กี่วินาที คุณจะเห็น BSOD ที่น่าอับอาย:

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ BSOD

มาดูกันว่าทั้ง 3 เครื่องมือนี้ให้อะไรเราบ้าง

ผลลัพธ์ WhoCrashed

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

เราเห็นว่าข้อผิดพลาดเป็นการดักเคอร์เนลที่ไม่รู้จักซึ่งเกิดจากไดรเวอร์ nirsoftbluescreendriver.sys คาดว่าจะเป็นเช่นนั้น ฉันเดาว่ารหัสของ Nir นั้นคล้ายกับตัวอย่างไดรเวอร์เคอร์เนลตัวชี้ null ของฉัน

ผลลัพธ์ของ Nirsoft BlueScreenView

BlueScreenView ให้ข้อมูลรายละเอียดเพิ่มเติม มันจะโหลดไฟล์ minidump ที่พบในโฟลเดอร์รูทโดยอัตโนมัติ ในมุมมองด้านบน คุณจะเห็นข้อมูลพื้นฐานบางอย่างเกี่ยวกับความผิดพลาด รวมถึง Bug Check String ซึ่งเหมือนกับ Panic String ในไฟล์วิเคราะห์ความผิดพลาดของ Linux และ Bug Check Code ซึ่งคล้ายกับ Kernel Page Error

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

และคุณยังสามารถโหลดหน้าจอ BSOD ดั้งเดิม (รูปแบบ XP):

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

อย่างที่คุณเห็น การทำงานกับ Windows ที่หยุดทำงานนั้นไม่ได้แตกต่างจากการทำงานกับ Linux อย่างไรก็ตาม คุณอาจต้องการทราบว่าเกิดอะไรขึ้นกันแน่ ดังนั้นคุณจะต้องมีแหล่งข้อมูลซึ่งไม่พร้อมใช้งานเสมอไป ในทางกลับกัน สิ่งนี้ไม่สามารถทำได้บน Linux เช่นกัน โดยเฉพาะอย่างยิ่งหากคุณโหลดไดรเวอร์ที่เป็นกรรมสิทธิ์ลงในเคอร์เนล เช่น Nvidia โปรดทราบเวอร์ชันของไฟล์ - นี่เป็นสิ่งสำคัญเมื่อเราต้องการใช้สัญลักษณ์ ซึ่งเราจะเห็นในการดำเนินการเร็วๆ นี้

ผลลัพธ์ Windows Debugger

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

สิทธิ์

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

โหลดสัญลักษณ์

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

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

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

คุณสามารถตรวจสอบเส้นทางสัญลักษณ์ปัจจุบันได้โดยใช้คำสั่ง .sympath มันจะว่างเปล่าเว้นแต่คุณจะโหลดสัญลักษณ์ใดๆ ตอนนี้เราจะโหลดสัญลักษณ์

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

หลังจากโหลดสัญลักษณ์แล้ว คุณไม่จำเป็นต้องเปิดไฟล์ minidump อีกครั้ง คุณเพียงแค่ต้องโหลดใหม่ คุณสามารถทำได้โดยเลือกช่อง Reload ในหน้าต่าง Symbol Search Path หรือเรียกใช้ .reload ในบรรทัดคำสั่ง debugger ซึ่งทำเครื่องหมายด้วย kd> ที่ด้านล่างของหน้าต่างคำสั่ง

การวิเคราะห์ Windows BSOD - คู่มือการใช้งานอย่างละเอียด

ตอนนี้คุณจะเห็นผลลัพธ์อื่น:

เรียกใช้การวิเคราะห์

การเรียกใช้การวิเคราะห์ทำได้โดยใช้คำสั่ง !analyze -v แฟล็ก -v ย่อมาจาก verbose

!วิเคราะห์ -v

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

สัญลักษณ์ไม่ตรงกับเคอร์เนล!

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

ซึ่งคล้ายกับตัวอย่าง Linux คือไม่มีแพ็กเกจ debuginfo ในที่เก็บบน openSUSE 11.2 หลังจากอัพเดตเคอร์เนล ในความเป็นจริงฉันพบปัญหานี้ กลับไปที่การติดตั้งสัญลักษณ์:

สัญลักษณ์สำหรับเคอร์เนล 7600.16385 ซึ่งถ้าจำไม่ผิดคือ RTM สังเกตการประทับเวลาและการแก้ไขที่แน่นอน - 090713-1255 ในทางกลับกัน Windows 7 กำลังเรียกใช้เคอร์เนลที่ใหม่กว่า รวมถึงผ่านการอัปเดตหลายครั้ง ซึ่งอาจส่งผลต่อเวอร์ชันของเคอร์เนลด้วย

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

รับสัญลักษณ์ที่ถูกต้องทางออนไลน์!

ต่อไปนี้เป็นสิ่งที่คุณต้องทำเพื่อรับสัญลักษณ์ล่าสุดสำหรับระบบปฏิบัติการของคุณ หลังจากโหลดการถ่ายโอนข้อมูลข้อขัดข้องใน Windows Debugger ให้เปิดหน้าต่าง Symbol Search Path อีกครั้ง นอกจากโลคัลพาธแล้ว เราจะระบุที่เก็บสัญลักษณ์ออนไลน์ ซึ่งสามารถเข้าถึงได้จากภายในดีบักเกอร์เท่านั้น สำหรับข้อมูลเพิ่มเติม โปรดดูบทความนี้ Microsoft KB

คุณต้องการสิ่งต่อไปนี้โดยเฉพาะ:

SRV*c:\ symbols*https://msdl.microsoft.com/download/ symbols

แทนที่ c:\ symbols ด้วยเส้นทางสัญลักษณ์ที่ถูกต้องบนเครื่องของคุณ ไม่จำเป็นต้องป้อนเส้นทางโดยใช้เส้นทางค้นหาสัญลักษณ์ นอกจากนี้ยังสามารถระบุบนบรรทัดรับคำสั่งโดยใช้คำสั่ง .sympath เราจะหารือเกี่ยวกับคำสั่งดีบักเกอร์และตัวเลือกอื่นๆ ในเร็วๆ นี้ แล้วมาทำการวิเคราะห์กันอีกครั้ง แน่นอนว่าเราจะไม่มีสัญลักษณ์สำหรับไดรเวอร์ Nirsoft

เพื่อให้สนุกยิ่งขึ้น นี่คือชุดการโทร (เพิ่มเติมเกี่ยวกับเรื่องนี้เร็วๆ นี้):

และเราสบายดี!

คำสั่งดีบักเกอร์และตัวเลือกอื่นๆ

โชคดีสำหรับคุณ Windows Debugger มีความช่วยเหลือที่ครบถ้วนและละเอียดมาก ซึ่งจะช่วยให้คุณดำเนินการได้ทันท่วงที หากคุณชอบสิ่งนี้ และถ้าคุณคุ้นเคยกับการวิเคราะห์ความผิดพลาดของ Linux สิ่งต่างๆ ส่วนใหญ่จะคุ้นเคย

ตัวอย่างเช่น คำสั่งที่มีประโยชน์มากคือ lm (รายการโมดูล) คุณสามารถเรียกใช้ lml เพื่อรับรายการโมดูลสั้นๆ หรือ lmv สำหรับรายการรายละเอียดที่สมบูรณ์ คุณยังสามารถแสดงรายการโมดูล user-land ด้วยแฟล็ก u หรือโมดูลเคอร์เนลด้วยแฟล็ก k

นี่คือตัวอย่างของ lvm:

นี่คือตัวอย่างของ lml; โปรดสังเกตว่าไดรเวอร์บางตัวไม่มีสัญลักษณ์ กล่าวคือ ไดรเวอร์ของบุคคลที่สาม เนื่องจากเคอร์เนลของ Windows ไม่ได้ถูกรวบรวมด้วยสัญลักษณ์เหล่านี้ และไม่พร้อมใช้งาน คุณอาจได้รับจากผู้ขาย

ภายใต้เมนูมุมมอง คุณมีคำสั่งจำนวนหนึ่งในตัว ดังนั้นคุณไม่จำเป็นต้องค้นหาคำสั่งเหล่านั้นในบรรทัดคำสั่ง คุณมี Watch, Locals, Registers, Memory, Call Stack ซึ่งเราได้เห็นเมื่อไม่นานมานี้ และอื่นๆ

ตัวอย่างเช่น คุณอาจต้องการแสดงกระบวนการและเธรด

หรือรีจิสเตอร์:

คำสั่งอื่นๆ ที่คุณอาจต้องการใช้ได้แก่ !memusage และ !address การรวมกันของคำสั่งและตัวเลือกที่เราเพิ่งเห็นนั้นค่อนข้างคล้ายกับ bt, ps และคำสั่งอื่นๆ ที่ใช้โดยยูทิลิตีข้อขัดข้อง ความคิดโดยรวมเหมือนกัน

ถอดประกอบ

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

ตัวเลือกการถอดประกอบ และอื่นๆ อีกมากมายมีอยู่ในเมนู

ไปเลย:

และคุณสามารถฝังหน้าต่างต่างๆ ลงในอินเทอร์เฟซหลักได้

สิ่งนี้แทบจะแตะภูเขาน้ำแข็งในสิ่งที่ Windows Debugger สามารถทำได้ แต่ฉันคิดว่ามันน่าจะเพียงพอสำหรับคนส่วนใหญ่

แล้วไงต่อ?

หากคุณแยกแหล่งที่มาของปัญหาออกแล้ว คุณสามารถลองทำหลายๆ อย่างได้:

ถอนการติดตั้งหรือปิดใช้งานไดรเวอร์ที่ไม่ดี

ดูว่าสิ่งนี้สร้างความแตกต่างหรือไม่ นั่นคือ ถ้าทำได้ เนื่องจากคุณอาจสูญเสียฟังก์ชันการทำงานที่สำคัญ หากปัญหายังคงอยู่ คุณอาจมีปัญหาที่ซับซ้อนเกี่ยวกับฮาร์ดแวร์

ลองอัปเดตไดรเวอร์

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

Google ออกข้อมูล

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

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

อื่นๆ

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

ส่งข้อมูลเคอร์เนลดัมพ์สำหรับการวิเคราะห์

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

หน้าที่เกี่ยวข้องมากที่สุดคือ oca.microsoft.com แต่ดูเหมือนว่าจะมีข้อผิดพลาดฝั่งเซิร์ฟเวอร์ อย่าลังเลที่จะแก้ไขฉันและ/หรือส่งข้อเสนอแนะและลิงก์ของคุณ

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

สิ่งเพิ่มเติม

การวินิจฉัยหน่วยความจำ

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

คุณยังสามารถใช้ Windows Memory Diagnostic

นอกจากนี้ คำแนะนำทั่วไปที่ระบุไว้ในข้อขัดข้องของ Linux ยังใช้ได้ที่นี่!

และนั่นคือทั้งหมด สุภาพบุรุษ!

อ้างอิง

โปรแกรมตรวจสอบไดรเวอร์

แพ็คเกจสัญลักษณ์ Windows

เครื่องมือดีบักสำหรับ Windows

Windows SDK

ใครพัง

เว็บไซต์ Nirsoft

Nirsoft Nirlauncher (รีวิวของฉัน)

Nirsoft BlueScreenView

Nirsoft StartBlueScreen

การวินิจฉัยหน่วยความจำของ Windows

Memtest86+

สัญลักษณ์ออนไลน์ howto

ดึงสัญลักษณ์จากเซิร์ฟเวอร์ออนไลน์จากภายใน Windows Debugger:

ใช้ Microsoft Symbols Server เพื่อรับไฟล์สัญลักษณ์ดีบัก

แหล่งข้อมูลที่เป็นประโยชน์อื่นๆ

บทความของ Microsoft เกี่ยวกับการวิเคราะห์การถ่ายโอนข้อมูลหน่วยความจำเคอร์เนล:

บทความที่เป็นประโยชน์ รวมถึงการปรับแต่งรีจิสทรี การใช้แป้นพิมพ์ a-la คำขอระบบ (SysRq) การใช้บรรทัดคำสั่งของ Windows Debugger และการใช้แบตช์ (สคริปต์)

ภาพรวมของตัวเลือกไฟล์การถ่ายโอนข้อมูลหน่วยความจำ

ทริกเกอร์การถ่ายโอนข้อมูลแป้นพิมพ์

บทความที่ยอดเยี่ยมโดย Mark Russinovich (Sysinternals ปัจจุบันคือ Wininternals):

กรณีโทรศัพท์ขัดข้อง

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

สรุป

ว้าว นั่นยาวและเกินบรรยายกว่าที่ฉันคาดไว้มาก เห็นได้ชัดว่าคุณไม่สามารถหลีกเลี่ยง super-geeko ได้เมื่อจัดการกับเคอร์เนล อย่างไรก็ตาม ฉันหวังว่าคุณจะชอบบทความนี้

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

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

ไชโย