[发明专利]记录C语言函数调用链的方法及C语言通用日志框架在审
申请号: | 201910413980.0 | 申请日: | 2019-05-17 |
公开(公告)号: | CN110134385A | 公开(公告)日: | 2019-08-16 |
发明(设计)人: | 臧虎;王仁重 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 赵兴华;王宝筠 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 日志 目标线 函数调用 消息队列 异常消息 记录 调用链 错误描述 定位程序 定位信息 目标函数 完整记录 线程标识 异常捕获 异常定位 异常发生 异常信息 通用 返回 错误码 框架本 末尾 线程 调用 上层 查找 传递 阅读 | ||
1.一种记录C语言函数调用链的方法,其特征在于,基于C语言通用日志框架,所述C语言通用日志框架至少包括缓冲区索引列表和日志消息缓冲区,所述缓冲区索引列表用于存储线程标识,所述日志消息缓冲区用于存储与线程标识对应的消息队列;
所述方法包括:
在沿函数调用链反向传递过程中,针对目标函数,在所述缓冲区索引列表中查找目标线程的线程标识;其中,所述目标线程为所述目标函数所属的线程,查找出的线程标识为目标线程标识;所述目标函数为所述函数调用链中任一的函数;
根据所述目标线程标识,在所述日志消息缓存区中确定所述目标线程对应的消息队列;确定出的消息队列为目标消息队列;
将与所述目标函数相关的异常消息作为节点,插入所述目标消息队列的末尾;所述异常消息包括错误描述;
在满足输出条件时,输出当前的目标消息队列至日志;所述目标消息队列表征了所述目标线程中发生异常的函数间的函数调用链;
所述目标函数向上层调用者返回包含错误码的返回值。
2.如权利要求1所述的方法,其特征在于,还包括:
在满足清空条件时,清空所述目标线程标识对应的消息队列。
3.如权利要求2所述的方法,其特征在于,所述C语言通用日志框架对外提供的基本应用程序编程接口包括:插入函数、日志写入函数以及清空函数。
4.如权利要求3所述的方法,其特征在于,
所述在所述缓冲区索引列表中查找目标线程的线程标识包括:
所述目标线程调用所述插入函数,由所述插入函数在所述缓冲区索引列表中查找所述目标线程的线程标识;
所述根据所述目标线程标识在所述日志消息缓存区中确定所述目标线程对应的消息队列的步骤,以及,将异常消息作为节点,插入所述目标消息队列的末尾的步骤,由所述插入函数执行;
所述输出当前的目标消息队列至日志包括:
所述目标线程调用所述日志写入函数,由所述日志写入函数输出当前的目标消息队列至日志;
所述清空所述目标线程标识对应的消息队列包括:
所述目标线程调用所述清空函数,由所述清空函数清空所述目标线程标识对应的消息队列。
5.如权利要求4所述的方法,其特征在于,还包括:
所述目标函数接收下层调用函数返回的返回值;其中,若所述下层调用函数被正确执行,所述返回值为第一返回值,否则,所述返回值为第二返回值;所述第二返回值包括错误码,所述第一返回值和第二返回值的数据类型相同。
6.如权利要求4所述的方法,其特征在于,所述目标函数向上层调用者返回包含错误码的返回值包括:
若所述下层调用函数返回第二返回值,且所述第二返回值中的错误码所表征的错误无法忽略,所述目标函数根据收到的错误码及自身的业务逻辑信息,生成包含错误码的第二返回值并返回上层调用者。
7.如权利要求6所述的方法,其特征在于,所述调用所述插入接口的动作是在所述目标函数确定所述第二返回值中的错误码所表征的错误无法忽略后执行的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910413980.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种直升式的头盔下高空漫游的虚拟现实系统
- 下一篇:一种程序编辑方法和装置