[发明专利]在处理器追踪日志中使用编译器类型信息进行数据流分析的方法和设备在审
| 申请号: | 202110939851.2 | 申请日: | 2016-11-21 |
| 公开(公告)号: | CN113704097A | 公开(公告)日: | 2021-11-26 |
| 发明(设计)人: | A.克里恩 | 申请(专利权)人: | 英特尔公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 申屠伟进;周学斌 |
| 地址: | 美国加利*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 处理器 追踪 日志 使用 编译器 类型 信息 进行 数据流 分析 方法 设备 | ||
本公开涉及在处理器追踪日志中使用编译器类型信息进行数据流分析的方法和设备。程序控制流追踪从处理器追踪模块获得,其可以是基于硬件的,并与调试信息以及来自基本块分解的信息组合使用,以识别产生存储器损坏的候选存储指令(一个或多个)。到软件程序的链接和候选存储指令(一个或多个)可用于进一步调试存储器损坏和/或插装软件程序以识别在将来执行编译的软件程序时产生存储器损坏的基本块(一个或多个)和/或跟踪软件程序的调试。
技术领域
本公开内容涉及计算机领域,并且具体地涉及在处理器追踪日志中使用编译器类型信息进行数据流分析的方法和设备。
背景技术
当存储器位置的内容由于编程错误而非故意修改时,在计算机程序中可发生存储器损坏(corruption)。当后来在该程序中使用损坏的存储器内容时,它或者导致程序崩溃或者导致意外的并且一般不想要的程序行为。
存储器损坏可能难以修正,至少有两个原因:1)存储器损坏源及其表现可能是远离的,使其难以将原因和结果相关。2)此类错误可能仅发生在不常见条件下,使其难以一致地再现该错误。
当调试存储器损坏时,普通调试方法是使用数据地址追踪来发现写入到损坏存储器位置的先前代码位置。然而,在性能开销方面,数据地址追踪是代价高的。相比之下,处理器追踪提供了用于调试的逻辑CPU线程的相对紧致(compact)的运行时间程序控制流追踪,但未提供数据地址追踪。
对“发现对损坏的位置的最后存储”问题的现有硬件调试解决方案至少需要地址追踪或全数据追踪或者甚至硬件上的重放支持。然而,数据地址追踪在快速无序核上用硬件实现是代价高的;它也具有由于记录追踪信息所需的带宽引起的高开销。程序切片技术可识别损坏的存储,但通常需要插装的(instrumented)代码并访问编译器中的全程序流程图。琐细程序中的存储器损坏可通过程序切片解决,但对于更复杂的程序不是这种情况。
发明内容
按照本发明第一方面的一种用于计算的设备,所述计算包含调试软件程序,所述设备包括:存储器分析模块,其要由计算机处理器操作以:获得用于编译的软件程序的调试信息,所述编译的软件程序是从用于所述软件程序的源代码或字节码编译的;接收所述编译的软件程序中的存储器损坏的标识;获得具有所述编译的软件程序的基本块列表的运行时间程序控制流追踪;分解或引起分解所述基本块列表以识别一组存储指令;在所述调试信息中识别所述组存储指令中的存储指令的和所述存储器损坏的数据类型或数据类型结构;基于是否每个存储指令是否具有所述存储器损坏的所述数据类型或数据类型结构并已经写入与所述存储器损坏相关联的内存位置确定一组存储指令中的每个存储指令是否为候选存储指令,并且获得并输出将所述候选存储指令映射到所述软件程序的所述源代码或字节码的部分的至少一个链接;其中,基本块列表中的每个基本块包括一个软件指令,除了进入该软件指令之外,该软件指令没有分支,除了在该软件指令的出口处,还没有分支,并且每个基本块是一个 运行时程序控制流跟踪中的节点。
按照本发明第二方面的一种用于调试软件程序的方法,包括:在包括处理器和存储器的计算装置中,获得用于编译的软件程序的调试信息,所述编译的软件程序是从用于所述软件程序的源代码或字节码编译的;接收所述编译的软件程序中的存储器损坏的标识;获得具有所述编译的软件程序的基本块列表的运行时间程序控制流追踪;分解或引起分解所述基本块列表以识别一组存储指令;在所述调试信息中识别所述组存储指令中的存储指令的和所述存储器损坏的数据类型或数据类型结构;基于每个存储指令是否具有所述存储器损坏的所述数据类型或数据类型结构并是否已经写入与所述存储器损坏相关联的存储器位置来确定所述组存储指令中的每个存储指令是否为候选存储指令,并且获得并输出将每个候选存储指令映射到所述软件程序的所述源代码或字节代码的部分的至少一个链接;其中所述基本块列表中的每个基本块包括软件指令,其没有分支入,不同于进入所述软件指令,并且没有分支出,不同于退出所述软件指令,并且每个基本块是所述运行时间程序控制流追踪中的节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英特尔公司,未经英特尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110939851.2/2.html,转载请声明来源钻瓜专利网。





