如果 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 的数据文件夹在 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从外部写入每个线程的minidump。崩溃的进程从不写入自己的转储,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