【技术实现步骤摘要】
【国外来华专利技术】软件故障的反向调试
技术介绍
计算机和对应的软件应用正变得越来越复杂,使得用户能够以各种方式来存储、访问以及操纵数据。例如,计算应用可以被用于执行文字处理、图形涉及、声音/视觉处理、数据分析、电子通信以及更多。计算机应用包括由计算机系统的一个或多个处理器执行的可执行指令形式的代码。这些指令由开发者在开发环境中创建并且定序在一起。一旦指令被编译、解译和/或构建,对应的应用就可以被部署以供使用。遗憾的是,计算机系统和应用不总是以所意图或所预期的方式来操作,这可能导致部署之前或之后的应用崩溃。至少出于该原因,调试应用以标识和修复代码中使应用崩溃的指令经常是必需的。还已经创建了不同的开发人员工具来协助开发者编写、编辑、测试和调试应用的可执行指令,以帮助解决系统故障。这些工具中的一些工具包括程序代码文本编辑器、源代码编辑器、调试器和集成开发环境(IDE),仅举几例。然而,遗憾的是,未被注意的程序错误有时会在开发阶段中持续存留,并且将直到软件应用被部署以供一般或广泛使用之后才会被注意到。在应用已经被部署的情况下,调试应用故障可能会更加困难,因为必须检查更大数量的代码以标识引起问题的指令。最近,被称为“时间旅行(timetravel)”调试的调试过程已经出现为一种流行的技术。利用时间旅行调试,跟踪器程序记录处理器指令中所有的处理器指令的状态、以及在程序的执行期间存在的状态中的许多状态。稍后,当程序被调试时,跟踪器数据被用于重创建在执行期间任何点存在的确切的存储器状态和寄存器状态,以便标识代码中引起错误的特定的指令和位置。该技术已 ...
【技术保护点】
1.一种计算机系统,包括:/n一个或多个处理器;以及/n一个或多个计算机可读硬件存储设备,具有被存储在其上的计算机可执行指令,所述计算机可执行指令能够由所述一个或多个处理器执行,以使所述计算机系统:/n获取与应用的先前执行对应的一组记录的状态值;/n从被包括在所述应用的所述先前执行的瘦硬件跟踪中的硬件跟踪数据获取针对一组处理器指令的控制流信息,所述一组处理器指令在所述应用的所述先前执行期间被执行;/n通过至少执行对在所述应用的所述先前执行期间被执行的所述一组处理器指令的迭代的后向和前向分析,针对所述一组处理器指令中的至少一些处理器指令中的每个处理器指令来标识在对应的执行时间处的特定程序状态;/n在所述迭代的后向和前向分析期间、并且响应于遇到(1)被包括在所述应用的所述先前执行期间被执行的所述一组处理器指令中并且(2)包括其目的地地址未知的存储器写指令的存储器写处理器指令:/n避免推断与所述存储器写指令相关联的所述未知的目的地地址处的未记录的程序状态值,使得至少直到检测到与所述未知的目的地地址相关联的冲突,所述未知的目的地地址中的过期值在所述迭代的后向和前向分析期间保持不被所述存储器写指 ...
【技术特征摘要】
【国外来华专利技术】20181001 US 16/148,8101.一种计算机系统,包括:
一个或多个处理器;以及
一个或多个计算机可读硬件存储设备,具有被存储在其上的计算机可执行指令,所述计算机可执行指令能够由所述一个或多个处理器执行,以使所述计算机系统:
获取与应用的先前执行对应的一组记录的状态值;
从被包括在所述应用的所述先前执行的瘦硬件跟踪中的硬件跟踪数据获取针对一组处理器指令的控制流信息,所述一组处理器指令在所述应用的所述先前执行期间被执行;
通过至少执行对在所述应用的所述先前执行期间被执行的所述一组处理器指令的迭代的后向和前向分析,针对所述一组处理器指令中的至少一些处理器指令中的每个处理器指令来标识在对应的执行时间处的特定程序状态;
在所述迭代的后向和前向分析期间、并且响应于遇到(1)被包括在所述应用的所述先前执行期间被执行的所述一组处理器指令中并且(2)包括其目的地地址未知的存储器写指令的存储器写处理器指令:
避免推断与所述存储器写指令相关联的所述未知的目的地地址处的未记录的程序状态值,使得至少直到检测到与所述未知的目的地地址相关联的冲突,所述未知的目的地地址中的过期值在所述迭代的后向和前向分析期间保持不被所述存储器写指令修改;以及
响应于检测到所述冲突,在所述未知的目的地地址中的所述过期值可修正的情况下修正所述过期值,或者备选地,当所述过期值不可修正时,提供所述未知的目的地地址中的所述过期值不可修正的指示。
2.根据权利要求1所述的计算机系统,其中与所述应用的所述先前执行对应的所述一组记录的状态值被包括在作为所述应用的崩溃的结果而生成的存储器转储文件中,或者备选地,所述一组记录的状态值响应于手动触发的事件而生成。
3.根据权利要求1所述的计算机系统,其中数据推断图被维持作为所述迭代的后向和前向分析的一部分,所述数据推断图被用于跟踪如何在所述迭代的后向和前向分析的前向方向和后向方向两者上推断特定数据值,所述特定数据值与被包括在所述一组处理器指令中的特定处理器指令相关联。
4.根据权利要求1所述的计算机系统,其中在所述未知的目的地地址中的所述过期值可修正的情况下修正所述过期值通过以下被执行:选择与所述过期值相关联的至少两个单独的值中的一个值,并且然后使用所选择的所述值用于所述存储器写指令。
5.根据权利要求1所述的计算机系统,其中在所述未知的目的地地址中的所述过期值可修正的情况下修正所述过期值通过以下被执行:恢复所述未知的目的地地址,并且然后使用经恢复的所述未知的目的地地址来推断所述过期值的实际值。
6.根据权利要求1所述的计算机系统,其中避免推断所述未知的目的地地址处的所述未记录的程序过期值通过忽略所述存储器写指令被执行。
7.一种计算机系统,包括:
一个或多个处理器;以及
一个或多个计算机可读硬件存储设备,具有被存储在其上的计算机可执行指令,所述计算机可执行指令能够由所述一个或多个处理器执行,以使所述计算机系统:
获取与应用的先前执行对应的一组记录的状态值;
标识与所述应用的所述先前执行对应的瘦硬件跟踪数据,所述瘦硬件跟踪数据包括硬件跟踪数据,所述硬件跟踪数据包括:(1)针对在所述应用的所述先前执行期间被执行的处理器指令的多个操作块的控制流信息;以及(2)针对被包括在所述多个操作块中的每个操作块的对应的操作块时间戳,其中所述多个操作块中的至少一些操作块由不同的处理器线程执行;
通过基于所述多个操作块中的每个操作块的对应的操作块时间戳对每个操作块顺序排序,来生成所述多个操作块的单个合并序列列表;以及
通过至少执行对被包括在所述多个操作块的所述单个合并序...
【专利技术属性】
技术研发人员:崔伟东,葛馨阳,B·C·C·卡斯克西,牛犇,王若愚,尹寅洙,
申请(专利权)人:微软技术许可有限责任公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。