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

สิ่งที่คุณเห็น
- Mister Download Manager ปิดโดยไม่คาดคิด: MDM ขัดข้อง หรือเกิดข้อผิดพลาดภายในและปิดตัวลง
- Mister Download Manager หยุดตอบสนอง: หน้าต่างไม่ตอบสนองเป็นเวลา 8 วินาที MDM ยังคงทำงานอยู่แต่ค้าง สิ้นสุดและเริ่ม MDM ใหม่ จะปิดสำเนาที่ค้างและเริ่มใหม่ หาก MDM กลับมาตอบสนองได้เอง หน้าต่างจะแจ้งให้ทราบ
ในหน้าต่าง:
- คุณกำลังทำอะไรอยู่เมื่อเกิดเหตุการณ์นี้ขึ้น? เป็นทางเลือก คำไม่กี่คำ เช่น "ฉันเปิดเพิ่ม URL" จะช่วยได้มาก
- รายงาน แสดงทุกสิ่งที่ถูกส่งไป อ่านก่อนได้หากต้องการ
- ส่งบน GitHub จะเปิดฟอร์ม รายงานข้อขัดข้อง ของ GitHub ในเบราว์เซอร์ของคุณ ซึ่งกรอกข้อมูลไว้แล้ว พร้อมกับโฟลเดอร์ที่เก็บรายงาน ลากไฟล์รายงานลงในฟอร์ม ตรวจสอบและส่ง คุณต้องมีบัญชี GitHub ไม่มีอะไรถูกส่งไปเอง
- หากมีคนรายงานปัญหาเดียวกันแล้ว หน้าต่างจะแจ้งให้ทราบ (รายงานแล้วว่าเป็นปัญหา #…) เปิดปัญหาที่รายงาน จะเปิดปัญหานั้นและคัดลอกรายงานของคุณไปยังคลิปบอร์ด เพื่อให้คุณสามารถเพิ่มเป็นความคิดเห็นได้
ปุ่มอื่นๆ จะคัดลอกรายงาน เปิดโฟลเดอร์ หรือเริ่ม MDM ใหม่อีกครั้ง
รายงานประกอบด้วยอะไรบ้าง
- สิ่งที่เกิดขึ้น: ข้อผิดพลาดและตำแหน่งในโค้ดของ MDM ที่เกิดเหตุการณ์ขึ้น
- สแต็ก: ตำแหน่งในโค้ดของ MDM ที่ขัดข้องหรือค้าง และสิ่งที่ส่วนอื่นๆ กำลังทำอยู่
- บันทึกเหตุการณ์ล่าสุดของ MDM: เช่น "คำสั่ง AddUrl" หรือ "หน้าต่างเปิด: add-url"
- ระบบ: เวอร์ชันของ MDM และวิธีการติดตั้ง ระบบปฏิบัติการและเวอร์ชัน โปรเซสเซอร์ ภาษาและธีม และจำนวนการดาวน์โหลดและคิวที่คุณมี นี่เป็นเพียงจำนวนเท่านั้น
ไม่มีสิ่งเหล่านี้:
- ที่อยู่ดาวน์โหลดหรือชื่อไฟล์ของคุณ;
- ชื่อผู้ใช้ของคุณ ซึ่งแสดงเป็น
~ในเส้นทางโฟลเดอร์
หากข้อความแสดงข้อผิดพลาดอ้างอิงถึงสิ่งที่คุณพิมพ์ ข้อความนั้นจะอยู่ในรายงาน ดังนั้นควรอ่านก่อนส่ง
ไฟล์ข้อมูลข้อขัดข้อง (.dmp) คือภาพรวมของสิ่งที่ MDM กำลังทำงานอยู่ในขณะนั้น ซึ่งช่วยนักพัฒนาได้มากที่สุด แต่ก็สามารถเก็บข้อมูลบางส่วนที่ MDM มีอยู่ในหน่วยความจำได้ เช่น ที่อยู่ดาวน์โหลด จะแนบมาก็ต่อเมื่อคุณเลือก แนบข้อมูลข้อขัดข้องด้วย เท่านั้น
รายงานถูกเก็บไว้ที่ไหน
ในโฟลเดอร์ข้อมูลของ MDM:
crashes\: แต่ละรายงาน (.txt) และข้อมูลข้อขัดข้อง (.dmp);logs\: บันทึกเหตุการณ์ของ MDM (mdm.logโดยมีไฟล์เก่ากว่าเป็นmdm.1.logเป็นต้น ขนาด 2 MB ต่อไฟล์)
โฟลเดอร์ข้อมูลของ MDM คือ %APPDATA%\misterdownloadmanager บน Windows, ~/Library/Application Support/misterdownloadmanager บน macOS และ ~/.local/share/misterdownloadmanager บน Linux ใน โหมดพกพา จะเป็นโฟลเดอร์ data ถัดจากโปรแกรม
บันทึกเหตุการณ์จะบันทึกสิ่งที่ MDM ทำ ดังนั้นรายงานสามารถแสดงสิ่งที่นำไปสู่ปัญหาได้ หากต้องการบันทึกรายละเอียดเพิ่มเติม ให้เริ่ม MDM ด้วยตัวแปรสภาพแวดล้อม MDM_LOG=debug
สำหรับนักพัฒนา
วิธีการทำงาน: MDM สำเนาที่สอง ซึ่งเป็น มอนิเตอร์ จะเริ่มทำงานพร้อมกับ --crash-monitor โค้ดข้อขัดข้องอยู่ใน crates/crash และ crates/app/src/crash.rs
- การตรวจจับปัญหา เมื่อ MDM ขัดข้อง (ข้อยกเว้นของ Windows, สัญญาณบน Linux, ข้อยกเว้นของ Mach บน macOS), เกิดข้อผิดพลาดร้ายแรง หรือค้าง จะขอการดัมพ์จากมอนิเตอร์ การค้างคือเฟรมของหน้าต่างที่ทำงานเกิน 8 วินาที ซึ่งถูกตรวจจับโดยเธรดเฝ้าระวังที่ไม่สนใจเวลาที่ใช้ในการพัก มอนิเตอร์จะเขียน มินิดัมพ์ ของทุกเธรดจากภายนอก ผ่าน
minidumperและcrash-handlerกระบวนการที่ขัดข้องจะไม่เขียนดัมพ์ของตัวเอง ซึ่งเป็นวิธีที่ Firefox, Crashpad และ Sentry ทำเช่นกัน - การอ่านไฟล์ดัมพ์ ตัวมอนิเตอร์จะอ่านไฟล์ดัมพ์ด้วย
rust-minidumpของ Mozilla โดยใช้สัญลักษณ์ Breakpad ของเวอร์ชันที่เผยแพร่เมื่อพบ หรือใช้ข้อมูลดีบักดั้งเดิมที่อยู่ข้างๆ บิลด์จากซอร์ส ลายเซ็น ของรายงาน (เช่นfreeze in misterdownloadmanager::winui::combo_edit) จะยังคงเหมือนเดิมสำหรับรายงานปัญหาเดียวกัน และหน้าต่างจะค้นหาปัญหาที่มีอยู่ด้วยลายเซ็นนี้ - สัญลักษณ์ บิลด์ที่เผยแพร่จะเก็บตารางบรรทัด (
debug = "line-tables-only") แต่ไม่มีการดาวน์โหลดใดๆ ที่รวมข้อมูลดีบักไว้ CI จะแปลงข้อมูลนี้เป็นMisterDownloadManager-<version>-symbols-<platform>.zip(tools/installer/symbols.pyโดยใช้dump_symsของ Mozilla) ซึ่งเผยแพร่พร้อมกับไฟล์อื่นๆ ของเวอร์ชันที่เผยแพร่ หน้าต่างรายงานจะดึงไฟล์ zip สำหรับเวอร์ชันของตัวเองเมื่อสแต็กแสดงที่อยู่เปล่า .dmpจากปัญหา:
cargo run -p mdm-crash --bin mdm-symbolicate -- crash.dmp MisterDownloadManager-<version>-symbols-windows-x64.zip
- การทดสอบ
cargo test -p mdm-crashจะจำลองการค้าง, การตื่นตระหนก และการขัดข้องจริง (examples/crashy.rs) และตรวจสอบลายเซ็นของแต่ละรายงาน หากต้องการลองใช้ในแอป ให้เริ่ม MDM ด้วยMDM_CRASH_TEST=1จากนั้นเรียกใช้misterdownloadmanager /show crash-test:freeze(หรือpanic,crash,abort)
ฟรี, โอเพนซอร์ส, ไม่มีโฆษณา, ไม่มีช่วงทดลองใช้
ดาวน์โหลด Mister Download Manager