Mister Download Manager가 예기치 않게 종료되거나 응답을 중지하면 충돌 보고서 창이 열립니다. 이 창은 발생한 상황을 보여주고, 전체 보고서를 읽을 수 있게 하며, GitHub의 개발자에게 보낼 수 있습니다. 각 보고서는 모든 사람의 문제를 해결하는 데 도움이 됩니다.

표시되는 내용
- Mister Download Manager이(가) 예기치 않게 종료되었습니다: MDM이 충돌했거나 내부 오류가 발생하여 종료되었습니다.
- Mister Download Manager이(가) 응답을 중지했습니다: 창이 8초 동안 응답하지 않았습니다. MDM은 여전히 실행 중이지만 멈춰 있습니다. MDM 종료 및 다시 시작은 멈춘 복사본을 닫고 새 복사본을 시작합니다. MDM이 스스로 다시 응답하면 창에 그렇게 표시됩니다.
창에서:
- 문제가 발생했을 때 무엇을 하고 있었습니까?는 선택 사항입니다. "URL 추가를 열었습니다"와 같은 몇 마디는 큰 도움이 됩니다.
- 보고서는 전송될 모든 것을 보여줍니다. 원하시면 먼저 읽어보세요.
- GitHub에 보내기는 보고서가 있는 폴더와 함께 GitHub의 충돌 보고서 양식을 브라우저에서 미리 채워진 상태로 엽니다. 보고서 파일을 양식으로 드래그하고 확인한 다음 제출합니다. GitHub 계정이 필요합니다. 아무것도 자동으로 전송되지 않습니다.
- 누군가 이미 동일한 문제를 보고했다면 창에 그렇게 표시됩니다(이미 문제 #…으로 보고됨). 보고된 문제 열기는 해당 문제를 열고 보고서를 클립보드에 넣어 댓글로 추가할 수 있도록 합니다.
다른 버튼은 보고서를 복사하거나, 해당 폴더를 열거나, MDM을 다시 시작합니다.
보고서에 포함된 내용
- 발생한 상황: 오류 및 MDM 코드에서 오류가 발생한 위치.
- 스택: MDM 코드에서 충돌하거나 멈춘 위치와 다른 모든 부분이 무엇을 하고 있었는지.
- MDM의 최근 로그: 예를 들어 "command AddUrl" 또는 "window opened: add-url".
- 시스템: MDM 버전 및 설치 방법, 운영 체제 및 버전, 프로세서, 언어 및 테마, 다운로드 및 대기열 수. 이는 개수만 포함됩니다.
다음은 포함되지 않습니다:
- 다운로드 주소 또는 파일 이름;
- 폴더 경로에
~로 표시되는 사용자 이름.
오류 메시지가 입력한 내용을 인용하는 경우 해당 텍스트가 보고서에 포함되므로 보내기 전에 읽어보세요.
충돌 데이터 파일(.dmp)은 MDM이 그 순간 실행 중이던 스냅샷입니다. 개발자에게 가장 도움이 되지만, 다운로드 주소와 같이 MDM이 메모리에 가지고 있던 조각을 포함할 수 있습니다. 충돌 데이터도 첨부를 선택한 경우에만 첨부됩니다.
보고서 보관 위치
MDM의 데이터 폴더에:
crashes\: 각 보고서(.txt) 및 해당 충돌 데이터(.dmp);logs\: MDM의 로그(mdm.log, 이전 로그는mdm.1.log등으로, 각 2MB).
MDM의 데이터 폴더는 Windows에서는 %APPDATA%\misterdownloadmanager, macOS에서는 ~/Library/Application Support/misterdownloadmanager, Linux에서는 ~/.local/share/misterdownloadmanager입니다. 휴대용 모드에서는 프로그램 옆의 data 폴더입니다.
로그는 MDM이 수행하는 작업을 기록하므로 보고서는 문제의 원인을 보여줄 수 있습니다. 더 자세한 내용을 기록하려면 환경 변수 MDM_LOG=debug로 MDM을 시작하세요.
개발자를 위해
작동 방식: MDM의 두 번째 복사본인 모니터가 --crash-monitor와 함께 옆에서 시작됩니다. 충돌 코드는 crates/crash 및 crates/app/src/crash.rs에 있습니다.
- 문제 포착. MDM이 충돌(Windows 예외, Linux의 신호, macOS의 Mach 예외), 패닉 또는 멈추면 모니터에 덤프를 요청합니다. 멈춤은 창의 프레임이 8초 이상 실행되는 것으로, 잠든 시간을 무시하는 감시 스레드에 의해 감지됩니다. 그러면 모니터는
minidumper및crash-handler를 통해 외부에서 모든 스레드의 미니덤프를 작성합니다. 충돌한 프로세스는 자체 덤프를 작성하지 않으며, 이는 Firefox, Crashpad 및 Sentry도 마찬가지입니다. - 덤프 읽기. 모니터는 Mozilla의
rust-minidump로 덤프를 읽습니다. 릴리스의 Breakpad 심볼이 발견되면 이를 사용하고, 소스에서 빌드된 경우 네이티브 디버그 정보를 사용합니다. 보고서의 서명(예:freeze in misterdownloadmanager::winui::combo_edit)은 동일한 문제의 보고서에서 항상 같으며, 창은 이를 위해 기존 문제를 검색합니다. - 심볼. 릴리스 빌드는 라인 테이블(
debug = "line-tables-only")을 유지하지만, 다운로드에는 디버그 정보가 포함되지 않습니다. CI는 이를MisterDownloadManager-<version>-symbols-<platform>.zip(tools/installer/symbols.py, Mozilla의dump_syms사용)로 변환하여 릴리스의 다른 파일과 함께 게시합니다. 스택에 주소만 표시될 때 보고서 창은 해당 버전의 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_CRASH_TEST=1로 MDM을 시작한 다음misterdownloadmanager /show crash-test:freeze(또는panic,crash,abort)를 실행하세요.
무료, 오픈 소스, 광고 없음, 평가판 없음.
Mister Download Manager 다운로드