主要内容

MATLAB 意外终止时

如果 MATLAB® 检测到内部错误,MATLAB 将会显示以下两个对话框之一:MathWorks® 崩溃报告程序或 MathWorks 崩溃分析程序。在这两种情况下,MATLAB 的内部状态均不可靠,因此不适合继续使用。如果这些对话框未出现,则您可以手动查找并发送崩溃文件。

MathWorks 崩溃报告程序

如果 MATLAB 崩溃,MathWorks 崩溃报告程序对话框将出现,提示您将崩溃报告发送到 MathWorks 技术支持。您可以选择提供再现步骤或描述在崩溃发生时您正在执行的操作。如果您点击发送报告并提供有效的电子邮件地址,您将很快收到一封自动电子邮件。如果您需要有关崩溃的帮助,请回复该电子邮件,技术支持人员将与您联系。如果您未收到电子邮件,您可以直接在 MathWorks 联系支持页上联系 MathWorks 技术支持。

崩溃报告程序显示与诊断问题原因相关的信息,这些信息因导致 MATLAB 崩溃的原因而异。如果您知道崩溃的原因,则可以在 MathWorks Bug 报告数据库中查找相关信息。

MathWorks 崩溃分析程序

如果 MATLAB 意外终止,MATLAB 将在您的计算机本地分析崩溃报告,以确定可能的原因。如果存在可能的解决方案,MATLAB 将显示 MathWorks 崩溃分析程序对话框。点击查看解决方案,以在您的浏览器中打开一个指向相关 MATLAB Answers™ 页面或 MathWorks 错误报告数据库的网页。要应用修复,必须重新启动 MATLAB。

如果提供的解决方案不适用,则点击发送报告并在窗口中输入再现步骤。

如果您应用修复后仍遇到崩溃,则点击发送报告或通过在 MathWorks 联系支持页上联系 MathWorks 技术支持创建一个支持案例。

手动发送崩溃文件

在某些情况下,崩溃报告程序不会打开。例如,如果您使用 -nodisplay 选项启动 MATLAB,则崩溃报告程序不可用。根据 MATLAB 崩溃的方式,它会生成文本崩溃报告或小型转储崩溃报告。它还可能生成其他日志文件。您可以将崩溃报告和日志文件通过电子邮件发送给 MathWorks 技术支持。

查找崩溃日志文件

当 MATLAB 崩溃时,它可能生成最多三个日志文件,其名称如下:

  • matlab_crash_dump.processID

  • java.log.processID

  • hs_error_pidprocessID.log

在这些文件名中,processID 表示一个四位数的进程 ID。例如,您可能会看到名为 matlab_crash_dump.3944java.log.3944hs_error_pid3944.log 的崩溃转储。崩溃日志文件的位置取决于您的操作系统。您可以使用 MATLAB 命令行窗口或使用您的操作系统导航到它们。

您可以使用以下代码直接从 MATLAB 命令行窗口查找崩溃日志文件。以下代码返回表 files,其中包含您的崩溃日志。使用 date 列来确定哪些崩溃日志与您的崩溃相关。

prefixes = ["matlab_crash_dump"; "java.log"; "hs_err"];
files = struct;

log_dir = "~";
if ispc
    log_dir = tempdir;
end

for i = 1:length(prefixes)
    log_pattern = fullfile(log_dir,prefixes(i)+"*");
    if ~isempty(dir(log_pattern))
        files = struct2table(dir(log_pattern));
        files = sortrows(files,"datenum","descend")
    end
end

您也可以使用以下方法在操作系统中手动搜索崩溃日志文件。

平台

系统导航

Windows®

在 Windows 平台上,崩溃日志文件位于操作系统存储临时文件的文件夹中。要打开您的 temp 文件夹,请在任务栏、开始菜单或文件资源管理器的搜索字段中输入以下文本:

%temp%
您也可以手动导航到此文件夹:
C:\Users\%username%\AppData\Local\Temp

macOS

macOS 平台上,崩溃日志文件保存到您的主文件夹。从 Finder 菜单栏中,选择转至 > 个人以打开您的个人文件夹。或者,从终端输入 cd ~cd $HOME 以导航到您的个人文件夹。

Linux®

在 Linux 平台上,崩溃日志文件保存到您的主文件夹。从终端输入 cd ~cd $HOME 以导航到您的主文件夹。

查找崩溃报告文件夹

自 R2025a 起

如果您在上一节中列出的位置无法找到相关的崩溃日志文件,您的 crash_reports 文件夹中可能存放有小型转储文件。小型转储文件名是通用唯一标识符 (UUID),由一长串字母、数字和破折号组成,后跟文件扩展名 .dmp。例如,您可能会看到类似 ac60e913-886c-466b-ae99-bceef3c25f19.dmp 的小型转储文件名。您可以使用 matlab.crashhandling.crashReportFolder 函数查找您的 crash_reports 文件夹,您也可以手动导航到它。

您可以使用以下命令从 MATLAB 命令行窗口查找崩溃报告文件夹。

平台

文件夹

Windows
cd(fullfile(matlab.crashhandling.crashReportFolder,"reports"))
macOS 和 Linux
cd(fullfile(matlab.crashhandling.crashReportFolder,"completed"))

您可以使用以下代码返回所有小型转储。以下代码返回表 files,其中包含您的小型转储。使用 date 列来确定哪些小型转储与您的崩溃相关。

files = struct;

report_dir = "completed";
if ispc
    report_dir = "reports";
end

pattern = fullfile(matlab.crashhandling.crashReportFolder,report_dir,'*.dmp');
if ~isempty(dir(pattern))
    files = struct2table(dir(pattern));
    files = sortrows(files,"datenum","descend")
end

您也可以手动导航到 crash_reports 文件夹。

平台

文件夹

Windows%LOCALAPPDATA%\MathWorks\release-hash\crash_reports
macOS$HOME/Library/Application Support/MathWorks/release-hash/crash_reports
Linux$HOME/.MathWorks/release-hash/crash_reports

在这些文件夹路径中,release-hash 表示每个 MATLAB 安装的唯一标识符。因此,您可能会找到多个包含崩溃转储文件的文件夹。要找到相关的崩溃转储,请检查每个文件夹中是否有时间戳接近崩溃时间的 .dmp 文件。

另请参阅

主题