主要内容

生成检测和报告运行时错误的独立代码

这个例子展示了如何生成C/ c++库或可执行文件来检测和报告运行时错误,比如越界数组索引。如果生成的代码检测到错误,它会报告一条消息并终止程序。您可以检测和修复仅在目标硬件上发生的错误。

写函数getelement它使用另一个结构字段的值索引到一个结构字段。

函数y = getelement(S)% # codegeny = S.A(S.u);结束

为独立库或可执行文件创建代码配置对象。例如,为静态库创建一个代码配置对象。启用代码生成报告。

CFG = code .config(“自由”);cfg。GenerateReport = true;

启用生成运行时错误检测和报告。

cfg。RuntimeChecks = true;

定义一个示例输入,可用于指定输入参数的属性。

S.A = ones(2,2);S.u = 1;

生成的代码。

codegen配置cfggetelementarg游戏{年代}

要打开代码生成报告,请单击查看报告链接。

在已生成文件列表中,单击getelement.c

您可以看到检查错误并调用函数报告错误的代码。例如,如果代码检测到超出范围的数组索引错误,它将调用rtDynamicBoundsError报告错误并终止程序。

/* Include files */ # Include "getelement_rtwutil.h" # Include "getelement_rtwutil.h" # Include  # Include  # Include  /*变量定义*/ static rtBoundsCheckInfo emlrtBCI = {1,/* iFirst */ 4, /* iLast */ 2, /* lineNo */ 5, /* colNo */ "S.A", /* aName */ "getelement", /* fName */ "C:\\Users\\username\\Documents\\MATLAB\\runtime-error-ex\\getelement. h"m",/* pName */ 0 /* checkKind */};static rtDoubleCheckInfo emlrtDCI = {2,/* lineNo */ 5, /* colNo */ "getelement", /* fName */ "C:\\Users\\username\\Documents\\MATLAB\\runtime-error-ex\\getelement. "/* pName */ 1 /* checkKind */};/*函数定义*/ double getelement(const struct0_T *S) {int i;如果(S - > u ! = (int)楼(S - > u)) {rtIntegerError (S - > u, &emlrtDCI);} i = (int)S->u;if ((i < 1) || (i > 4)) {rtDynamicBoundsError(i, 1,4, &emlrtBCI);} return S->A[i - 1];}

错误报告软件使用将错误消息写入stderr。它使用中止终止应用程序。如果中止不可用,你必须提供它们。的中止函数突然终止程序。如果您的系统支持信号,您可以捕金宝app获中止信号(SIGABRT)这样你就可以控制程序的终止。

相关的话题