[发明专利]故障诊断方法、装置及电子设备有效
申请号: | 201810407295.2 | 申请日: | 2018-04-28 |
公开(公告)号: | CN108628744B | 公开(公告)日: | 2022-03-15 |
发明(设计)人: | 林汉忠 | 申请(专利权)人: | 深圳市风云实业有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 郭新娟 |
地址: | 518000 广东省深圳市车公*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 故障诊断 方法 装置 电子设备 | ||
本发明实施例涉及C语言编程技术领域,具体而言,涉及一种故障诊断方法、装置及电子设备。该故障诊断方法包括:若销毁使用对象且获得使用对象的引用计数不为零的信息时,将使用对象的其中一个调用点作为待诊断调用点,获得对应的使用者地址,根据使用者地址遍历预设的使用者配对表和使用对象调用点列表,获得待诊断调用点列表,统计待诊断调用点列表中包含的引用计数加一的使用次数总和以及引用计数减一的使用次数总和,判断引用计数加一的使用次数总和与引用计数减一的使用次数总和是否相同,若不相同,将待诊断调用点判定为故障调用点,将待诊断调用点列表和使用者配对表的信息进行存储。该方法能对出现引用计数故障的调用点进行准确定位。
技术领域
本发明实施例涉及C语言编程技术领域,具体而言,涉及一种故障诊断方法、装置及电子设备。
背景技术
在C语言代码编程实现中,一个使用者想要使用对象,如引用对象,首先需要持有该对象,操作对象的引用计数加1,表示使用者正在使用该对象,一直到使用者不再需要持有该对象时,会解除引用,操作对象的引用计数减1。在较多场景中,需要释放使用对象所占资源,而在进行资源释放之前,确定使用对象的引用计数故障信息十分重要。
发明内容
有鉴于此,本发明提供了一种故障诊断方法、装置及电子设备,以实现对出现引用计数故障的调用点进行准确定位。
为实现上述目的,本发明实施例提供了一种故障诊断方法,用于诊断C语言代码编程环境中,使用对象对应的各调用点故障与否,其中,使用者可以对使用对象进行持有或者释放,当所述使用者持有该使用对象时,该使用对象的引用计数加一,当所述使用者释放该使用对象时,该使用对象的引用计数减一,所述方法包括:
若销毁所述使用对象且获得所述使用对象的引用计数不为零的信息时,将所述使用对象的其中一个调用点作为待诊断调用点,获得所述待诊断调用点对应的使用者地址;
根据所述使用者地址遍历预设的使用者配对表和使用对象调用点列表,获得待诊断调用点列表;
统计所述待诊断调用点列表中包含的引用计数加一的使用次数总和以及引用计数减一的使用次数总和;
判断所述引用计数加一的使用次数总和与所述引用计数减一的使用次数总和是否相同,若不相同,将所述待诊断调用点判定为故障调用点,将所述待诊断调用点列表中的信息和所述遍历的使用者配对表中的信息进行存储。
可选地,所述方法还包括:
根据所存储的待诊断调用点列表中的信息和所述遍历的使用者配对表中的信息,采用预设的地址和符号映射表查找出对应的函数名或代码位置信息,将所述函数名或所述代码位置信息进行存储。
可选地,将所述待诊断调用点列表中的信息和遍历的使用者配对表中的信息进行存储的步骤,包括:
将所述待诊断调用点列表中包含的引用计数加一的调用点地址、引用计数加一的使用次数总和、引用计数减一的调用点地址和引用计数减一的使用次数总和进行存储;
将所述遍历的使用者配对表中的使用者地址进行存储。
可选地,所述引用计数加一的调用点地址、所述引用计数加一的使用次数总和、所述引用计数减一的调用点地址和所述引用计数减一的使用次数总和通过以下步骤获得:
获得被调用的引用计数加一的操作代码在指令级别中的内存地址,将该内存地址作为引用计数加一的调用点地址;
获得引用计数加一操作代码被运行的总次数,将该总次数作为引用计数加一的使用次数总和;
获得被调用的引用计数减一的操作代码在指令级别中的内存地址,将该内存地址作为引用计数减一的调用点地址;
获得引用计数减一操作代码被运行的总次数,将该总次数作为引用计数减一的使用次数总和。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市风云实业有限公司,未经深圳市风云实业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810407295.2/2.html,转载请声明来源钻瓜专利网。