CANN运行时错误消息检视清单 Error Message 检视清单【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtimeOverview用于检查 ErrMsg 宏修改是否合规重点关注error_code.json / error_code_meta.h 双源文本质量、宏参数数量匹配、ErrMsg 语法问题和参数类型。1. error_code.json 校验校验项 — error_code.json 与 error_code_meta.h 双源同步校验1新增或修改错误码时必须同时更新两处并保持一致文件用途消费方src/dfx/error_manager/error_code.json外部错误码元数据ErrorManager::ATCReportErrMessageATC / 外部上报路径src/runtime/core/inc/common/error_code_meta.h→RUNTIME_ERROR_CODE_TABLEX-Macro 元数据表GetParamNames()/PrintErrMsgToLog()2ErrMessage 模板必须完全一致含标点、空格 3Arglist 参数名与参数数量必须完全一致4如仅更新一处而遗漏另一处会导致 ATC 上报与运行时打屏消息不一致或参数数量校验失败校验项 — ErrMessage 文本校验1首字母未大写第一个英文字母应大写占位符除外 2末尾句号缺失完整句子末尾应有句号最后%s是独立extend_info且模板无句号时属于设计选择 3%s数量与 Arglist 不匹配ErrMessage 中%s数量必须等于 Arglist 参数数量校验项 — suggestion 校验1缺少 suggestion 2suggestion 中多条信息不使用换行符\n应使用空格分隔如有特殊情况则特殊处理 3编号后缺空格1./2.后应有空格 4统一使用 N/ANA→N/A5首字母未大写第一个英文字母应大写 6末尾句号缺失完整句子末尾应有句号N/A 不需要 7语法错误主谓一致、时态、介词、拼写2. 修改点使用宏 错误码校验校验项 — 参数数量校验在error_code_meta.h的RUNTIME_ERROR_CODE_TABLE中每个 EE/EH 错误码均有 Arglist 参数表示当前错误码所需传入的参数。如传入参数数量错误ErrMsg 打屏上报会失败。参数数量计算规则有效参数数量 GetParamNames(ErrorCode) 的大小PrintErrMsgToLog在参数数量不匹配时会直接 return 并打印警告日志。EE 层宏参数计算规则1最底层外部错误码打屏宏RT_LOG_OUTER_MSG_IMPL不自动添加任何参数2自动前置函数名的宏RT_LOG_OUTER_MSG_WITH_FUNC及再次封装后的宏自动添加__func__作第一个参数。有效参数 1 len(args)。勿手动重复传__func__。3专用宏为简化使用通常自动处理通用参数有效参数要根据实际情况计算。如RT_LOG_OUTER_MSG_INVALID_PARAM宏为 EE1003 专用展开链为RT_LOG_OUTER_MSG_INVALID_PARAM(parm, expect) → RT_LOG_OUTER_MSG_WITH_FUNC(EE1003, (parm), #parm, expect) → RT_LOG_OUTER_MSG_IMPL(EE1003, __func__, (parm), #parm, expect)有效参数 3 len(args)。EE1003 期望 4 个参数可变参数应为 1 个即期望值 expect。EH 层宏说明EH 系列错误码ACL 层使用acl::AclErrorLogManager::ReportInputError上报通过 key-value 字符串向量传参不走RT_LOG_OUTER_MSG_*宏链。参数数量校验规则相同传入的 value 数量必须等于 Arglist 参数数量。校验项 — 参数值校验1参数值避免使用std::string拼接方式该方式创建临时变量会导致 so 变大建议使用RtFmtMsg函数定义于rt_log.h以格式化字符串方式传入宏2末尾句号缺少或重复通过结构化参数宏传入外部错误码时参数是否需末尾句号取决于 ErrMessage 模板。模板中%s之后有句号→ 传入参数不加句号避免双句号 ..模板中%s之后没有句号且参数是完整英文句子 →应加句号3. 常见错误3.1 WITH_FUNC 和手动func重复// ✗ WITH_FUNC 自动加 __func__手动再传导致重复 → 参数5EE1011期望4 RT_LOG_OUTER_MSG_WITH_FUNC(ErrorCode::EE1011, __func__, ver, ver, msg); // ✓ 只传可变参数 → 参数134 RT_LOG_OUTER_MSG_WITH_FUNC(ErrorCode::EE1011, ver, ver, msg);3.2 NA vs N/Asuggestion: { Solution: NA } // ✗ 应使用 N/A suggestion: { Solution: N/A } // ✓3.3 句号重复// ✗ EE1011 的 ErrMessage 模板最后一个 %s 后有句号reason 参数再加句号导致重复 COND_RETURN_AND_MSG_OUTER(trueStream-GetModelNum() 0, RT_ERROR_STREAM_MODEL, ErrorCode::EE1011, __func__, 0, trueStream-modelNum, The stream is not bound to a model.); // ✓ reason 参数不加句号 COND_RETURN_AND_MSG_OUTER(trueStream-GetModelNum() 0, RT_ERROR_STREAM_MODEL, ErrorCode::EE1011, __func__, 0, trueStream-modelNum, The stream is not bound to a model);注意COND_RETURN_AND_MSG_OUTER展开为RT_LOG_OUTER_MSG_IMPL不自动添加__func__因此此处手动传入__func__是正确的与 3.1 的 WITH_FUNC 重复问题不同。4. 源文件索引文件作用src/runtime/core/inc/common/error_code_meta.hX-Macro 错误码元数据表RUNTIME_ERROR_CODE_TABLEGetParamNames / PrintErrMsgToLog 数据源src/dfx/error_manager/error_code.json外部错误码元数据ATCReportErrMessage 数据源src/runtime/core/inc/base.hpp核心宏定义 ErrorCodeProcess模板函数src/runtime/core/inc/common/rt_log.hErrorCode枚举 GetParamNames/PrintErrMsgToLog/RtFmtMsg声明src/runtime/core/inc/common/error_message_manage.hppCOND_*封装宏 专用宏src/runtime/api/api_c.hAPI 层宏含COND_RETURN_EXT_ERRCODE_AND_MSG_OUTERsrc/runtime/core/src/common/rt_log.ccGetParamNamesPrintErrMsgToLogDispatchErrMsg实现【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考