检测 C/C++ 自定义代码中的设计错误
要检测模型模块或 Stateflow® 图中具有 C/C++ 自定义代码的模型中的除以零和超出范围的数组访问错误,请使用设计错误检测分析。Simulink Design Verifier 识别导致错误的代码,然后证明错误是有效的,或者生成复制错误的测试用例。
此示例显示如何在 Stateflow® 图中检测由 C/C++ 代码组成的模型中的除以零错误。
步骤 1:打开模型
示例模型 sldvexCustomCodeErrorDetectionExample
包含一个 Stateflow® 图,该图调用使用输入和输出总线的 C/C++ 自定义代码。
open_system('sldvexCustomCodeErrorDetectionExample');
步骤 2:执行设计错误检测分析
要执行设计错误检测分析,请在 Design Verifier 选项卡中点击检测设计错误。分析完成后,“结果摘要”窗口将显示一个目标被证伪。
步骤 3:查看分析结果
在 Design Verifier 选项卡的查看结果部分中,点击在模型中突出显示。要查看导致错误的 C/C++ 运行时错误目标,点击 Simulink® 编辑器。结果检查器窗口显示除以零的目标。
注意:当您点击“错误 - 需要仿真目标”的查看测试用例时,Simulink® Design Verifier™ 会显示复制该错误的测试用例。如果您仿真测试用例,MATLAB® 可能会在自定义代码分析期间崩溃。
要查看 HTML 报告,请在 Design Verifier 选项卡上点击 HTML 报告。报告中的设计错误检测目标状态部分描述了被伪造的目标。
步骤 4:修复设计错误
在示例模型中,右键点击灰色的 Saturation 模块,然后取消注释该模块。通过点击检测设计错误重新分析模型。结果表明 C/C++ 运行时目标是有效的。
步骤 5:清理
为了完成示例,请关闭模型。
close_system('sldvexCustomCodeErrorDetectionExample', 0);