Mister Download Manager
  1. 主页
  2. 帮助
  3. 崩溃报告

崩溃报告

如果 Mister Download Manager 意外关闭或停止响应,会打开一个崩溃报告窗口。它会显示发生了什么,让您阅读完整的报告,并可以将其发送给 GitHub 上的开发者。每份报告都有助于为所有人解决问题。

MDM 停止响应后的崩溃报告窗口

您会看到什么

  • Mister Download Manager 意外关闭:MDM 崩溃,或遇到内部错误并关闭。
  • Mister Download Manager 停止响应:其窗口在 8 秒内没有响应。MDM 仍在运行,但已冻结。结束并重启 MDM会关闭冻结的副本并启动一个新的。如果 MDM 自动恢复响应,窗口会显示。

在窗口中:

  1. 发生时您在做什么?是可选的。几个字,例如“我打开了添加 URL”,会很有帮助。
  2. 报告显示了将要发送的所有内容。如果您愿意,可以先阅读。
  3. 在 GitHub 上发送会在您的浏览器中打开 GitHub 的崩溃报告表单,其中已填写好内容,并附带报告所在的文件夹。将报告文件拖到表单中,检查并提交。您需要一个 GitHub 帐户。不会自动发送任何内容。
  4. 如果有人已经报告了相同的问题,窗口会显示(已报告为问题 #…)。打开已报告的问题会打开它并将您的报告复制到剪贴板,以便您可以将其作为评论添加。

其他按钮会复制报告、打开其文件夹或再次启动 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