一种软件错误码的传递方法、 装置及系统 【技术领域】
本发明实施例涉及通信技术, 尤其涉及一种软件错误码的传递方法、 装置及系统。背景技术 在软件设计中, 通常都会设计模块或设计函数返回错误码, 根据错误码来判断、 定 位软件故障分支流程。
目前, 错误码的设计思路通常有两类 : 错误码连续传递方式和错误码间接传递方 式。具体来说, 错误码连续传递方式指不改变原始错误码而连续传递的方式。如图 1 所示, 图 1 是现有技术中错误码连续传递方式的方法流程图。 根据图 1, 底层模块 A 将错误码 errA 传递给上一层模块 B, 这样错误码 errA 依次传到顶层模块, 顶层模块返回错误码给外部接 口。错误码连续传递方式的优点是外部接口可以知道最原始的错误码, 其不足是外部接口 无法得知错误码的传递路径, 且由于 errA 通常是一类错误类型, 所以外部接口并不能精确 定位故障。 错误码间接传递方式的方式可以参考图 2, 图 2 是现有技术中错误码间接传递方 式的方法流程图。根据图 2, 错误码通过间接传递, 外部接口可以知道顶层模块 N 的故障分 支。 但是由于错误码间接传递, 外部接口不知道除顶层模块外的其它模块的错误码, 且不知 道错误码的传递路径, 外部接口同样并不能精确定位故障。
发明内容
本发明实施例提供一种软件错误码的传递方法及装置, 可以确定错误码的传递路 径, 以便精确的定位故障错误原因, 提高可维护性。
本发明实施例提供的一种软件错误码的传递方法, 包括 :
接收下层模块发来的错误码 A, 错误码 A 是当下层模块有故障分支时生成的 ;
将自身生成的错误码 B 和所接收到的错误码 A 合成错误码 AB, 将错误码 AB 传递给 上层模块。
本发明实施例提供的一种软件错误码的传递装置, 所述装置包括 :
接收单元, 用于接收下层模块发来的错误码 A, 错误码 A 是当下层模块有故障分支 时生成的 ;
合成单元, 用于将自身生成的错误码 B 和所接收到的错误码 A 合成错误码 AB ;
发送单元, 用于将所述错误码 AB 传递给上层模块。
本发明实施例提供的一种软件错误码的传递系统, 包括 :
第一模块, 用于生成错误码 A 并发送出去 ; 所述生成错误码 A 是在第一模块有故障 分支时生成的 ;
第二模块, 用于接收所述错误码 A, 并且将自身生成的错误码 B 和所述错误码 A 合 成错误码 AB, 并发送出去, 所述第二模块是第一模块的上层模块。
通过本发明实施例提出的软件错误码的传递方法、 装置和系统, 错误码在传递的 过程中携带各层模块的故障分支信息, 这样, 根据错误码就可以确定错误码的传递路径, 以便精确的定位故障错误原因, 提高可维护性。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍, 显而易见地, 下面描述中的附图是本发 明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根 据这些附图获得其他的附图。
图 1 是现有技术中错误码连续传递方式的方法流程图 ;
图 2 是现有技术中错误码间接传递方式的方法流程图 ;
图 3 是本发明实施例提供的软件错误码的传递方法流程图 ;
图 4 是本发明实施例提供的软件错误码的传递装置示意图 ;
图 5 是本发明实施例提供的软件错误码的传递系统示意图。
具体实施方式
为使本发明实施例的目的、 技术方案和优点更加清楚, 下面将结合本发明实施例 中的附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例是 本发明一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。
本发明的发明人经过研究发现, 对于 32 位的操作系统, 函数错误码为 32bit, 这 样可以充分利用错误码来携带更多的信息。例如, 如果用 8bit 来记录每一层错误码, 那么 32bit 可记录 4 层错误码, 类推如果用 4bit 来记录每一层的错误码, 那么 32bit 可记录 8 层 错误码, 基于此想法, 以函数为单位设计错误码, 函数调用时继承上一层的错误码, 将多级 错误码合成在一起。
实施例一 :
本发明实施例提供了一种软件错误码的传递方法, 参见图 3, 图 3 是本发明实施例 提供的软件错误码的传递方法流程图 ; 该方法包括 :
302 : 接收下层模块发来的错误码 A, 错误码 A 是当下层模块有故障分支时生成 的;
304 : 将自身生成的错误码 B 和所接收到的错误码 A 合成错误码 AB, 将错误码 AB 传 递给上层模块 ;
如何合成错误码 AB 的具体实现方式本发明不做限定。
示例一, 以 4bit 来记录每一层错误码, 当收到下层模块发来的错误码 A 时, 将错误 码 A 左移 4 位, 将自身生成的错误码 B 放在最低 4 位, 合成错误码 AB ; 构建错误码具体可实 现如下 :
#define BUILD_ERR_NUM(ulErrNoAdd, ulErrNoOld)\
((ulErrNoOld << 4)|(ulErrNoAdd & 0Xf))
示例二, 以 4bit 来记录每一层错误码, 每层最多只能记 15 个类型的错误码, 可用 以下方法可扩展到 255 个类型的错误码。如果错误码小于 15 个类型仍用 4bit 记录, 如果 错误码大于 15 个类型则用 12bit 记录, 其中高 4bit 为 0, 低 8bit 为错误码。构建错误码具体可实现如下 :
#define BUILD_ERR_NUM(ulErrNoAdd, ulErrNoOld)\
((ulErrNoOld << 16) ? ((ulErrNoOld << 4)|ulErrNoAdd)\
: ((ulErrNoOld << 12)|(ulErrNoAss << 4)))
这样, 当自身生成的错误码 B 大于 15 个类型, 则将错误码 A 左移 12 位, 错误码 B 放在最低 12 位, 即最低 12 位中, 高 4bit 为 0, 低 8bit 为错误码, 合成错误码 AB。
相应地, 上层模块将自身生成的错误码 C 和所接收到的错误码 AB 合成错误码 ABC, 将错误码 ABC 传递给更上层模块 ;
依此类推, 顶层模块 N 将自身生成的错误码 N 和所接收到的 ABC... 合成错误码 ABC...N 传递给外部接口。
当外部接口进行错误码解析时, 最低位的错误码为顶层错误码 ; 例如 :
结合示例一进行说明, 对于 32 位的操作系统来说, 如果用 4bit 来记录每一层的 错误码, 那么 32bit 可记录 8 层错误码, 这样当错误码为 0001 0010 00110100 0101 0110 0111 1000 时, 则 1000 为最顶层错误码, 0001 为最底层错误码。
结合示例二进行说明, 对于 32 位的操作系统, 当错误码为 0001 0000 10111100 0000 1101 1110 1111 时, 1111 为最顶层错误码, 0001 为底层错误码, 对于错误码的类型大 于 15 个时, 则错误码用 12bit 记录, 具体来说高 4bit 为 0, 低 8bit 为错误码, 也就是说 0000 1011 1100 和 0000 1101 1111 分别为中间二层的错误码, 这样, 虽然示例二的方法只记录 了 4 层错误码, 但是每层错误码可以记录的错误码类型的个数可以达到 255 个, 而且由于最 顶层错误码位于最低位, 这样可以确保最顶层以及相邻最顶层的错误码可以被获得。
可见, 通过本发明实施例提供的软件错误码的传递方法, 错误码在传递的过程中 携带各层模块的故障分支信息, 这样, 根据错误码就可以确定错误码的传递路径, 以便精确 的定位故障错误原因, 提高可维护性。
实施例二 :
本发明实施例还提供了一种软件错误码的传递装置, 参见图 4, 图 4 是本发明实施 例提供的软件错误码的传递装置示意图, 该装置包括 :
接收单元 402 : 用于接收下层模块发来的错误码 A, 错误码 A 是当下层模块有故障 分支时生成的 ;
合成单元 404 : 用于将自身生成的错误码 B 和所接收到的错误码 A 合成错误码 AB ;
发送单元 406, 用于将所述错误码 AB 传递给上层模块 ;
如何合成错误码 AB 的具体实现方式本发明不做限定。
示例一, 以 4bit 来记录每一层错误码, 这样, 合成单元具体包括 : 将所接收到的错 误码 A 左移 4 位, 将自身生成的错误码 B 放在最低 4 位, 合成错误码 AB ;
示例二, 以 4bit 来记录每一层错误码, 每层最多只能记 15 个类型的错误码, 可用 以下方法可扩展到 255 个类型的错误码。如果错误码小于 15 个类型仍用 4bit 记录, 如果 错误码大于 15 个类型则用 12bit 记录, 其中高 4bit 为 0, 低 8bit 为错误码。
这样, 合成单元具体包括 : 当自身生成的错误码 B 大于 15 个类型, 将错误码 A 左移 12 位, 错误码 B 放在最低 12 位, 其中最低 12 位中, 高 4bit 为 0, 低 8bit 为错误码, 合成错 误码 AB。可见, 通过本发明实施例提供的软件错误码的传递装置, 错误码在传递的过程中 携带各层模块的故障分支信息, 这样, 根据错误码就可以确定错误码的传递路径, 以便精确 的定位故障错误原因, 提高可维护性。
实施例三 :
本发明实施例还提供了一种软件错误码的传递系统, 参见图 5, 图 5 是本发明实施 例提供的软件错误码的传递系统示意图, 该系统包括 :
第一模块 502 : 用于生成错误码 A 并发送出去 ; 所述生成错误码 A 是在第一模块有 故障分支时生成的 ;
第二模块 504, 用于接收所述错误码 A, 并且将自身生成的错误码 B 和所述错误码 A 合成错误码 AB, 并发送出去, 所述第二模块是第一模块的上层模块 ;
在本发明具体实现时, 所述第二模块具体包括 :
接收单元, 用于接收第一模块发来的错误码 A ;
合成单元, 用于将自身生成的错误码 B 和所接收到的错误码 A 合成错误码 AB ;
发送单元, 用于将所述错误码 AB 发送出去。
如何合成错误码 AB 的具体实现方式本发明不做限定。 示例一, 以 4bit 来记录每一层错误码, 这样, 合成单元具体包括 : 将所接收到的错 误码 A 左移 4 位, 将自身生成的错误码 B 放在最低 4 位, 合成错误码 AB ;
示例二, 以 4bit 来记录每一层错误码, 每层最多只能记 15 个类型的错误码, 可用 以下方法可扩展到 255 个类型的错误码。如果错误码小于 15 个类型仍用 4bit 记录, 如果 错误码大于 15 个类型则用 12bit 记录, 其中高 4bit 为 0, 低 8bit 为错误码。
这样, 合成单元具体包括 : 当自身生成的错误码 B 大于 15 个类型, 将错误码 A 左移 12 位, 错误码 B 放在最低 12 位, 其中最低 12 位中, 高 4bit 为 0, 低 8bit 为错误码, 合成错 误码 AB。
相应地, 所述系统还包括第三模块, 用于接收所述错误码 AB, 并且将自身生成的错 误码 C 和所述错误码 AB 合成错误码 ABC, 并发送出去, 所述第三模块是第二模块的上层模 块 ;;
依次类推, 所述系统还进一步顶层模块, 用于将自身生成的错误码 N 和所接收到 的 ABC... 合成错误码 ABC...N 传递给外部接口, 所述 ABC... 指所述顶层模块的相邻下层 模块生成的错误码。
可见, 通过本发明实施例提供的软件错误码的传递系统, 错误码在传递的过程中 携带各层模块的故障分支信息, 这样, 根据错误码就可以确定错误码的传递路径, 以便精确 的定位故障错误原因, 提高可维护性。
本领域普通技术人员可以理解 : 实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成, 前述程序可以存储于一计算机可读取存储介质中, 该程序在 执行时, 执行包括上述方法实施例的步骤 ; 而前述的存储介质包括 : ROM、 RAM、 磁碟或者光 盘等各种可以存储程序代码的介质。
最后应说明的是 : 以上实施例仅用以说明本发明的技术方案, 而非对其限制 ; 尽 管参照前述实施例对本发明进行了详细的说明, 本领域的普通技术人员应当理解 : 其依然 可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替
换; 而这些修改或者替换, 并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。