【技术实现步骤摘要】
本专利技术涉及一种计算机程序处理系统及方法,特别是关于一种计算机程序除错系统及方法。
技术介绍
程序除错的目的是了解计算机程序执行的过程,以便纠正计算机程序执行过程中出现的错误。目前Intel中央处理器提供一种除错方法,该方法利用中央处理器内部的最后分支追踪寄存器(Last Branch Trace MSR)记录计算机程序执行的过程。该最后分支追踪寄存器只适用于真实模式(real mode)、保护模式(protected mode)及虚拟86模式(V86mode)。当中央处理器在系统管理模式(System Management Mode,SMM)时,就不能利用最后分支追踪寄存器进行计算机程序的除错。
技术实现思路
鉴于以上内容,有必要提出一种系统管理模式下的计算机程序除错系统及方法。一种计算机程序除错系统,用于中央处理器工作在在系统管理模式下对原程序的执行过程进行追踪,该系统包括:追踪标志设置模块,用于将中央处理器的标志寄存器的追踪标志设置为“1”;寄存器入栈模块,用于在执行完原程序的一条指令后将除错过程中需要使用的寄存器的值压入堆栈;操作码读取模块,用于读取原程序的下一条指令的操作码并判断该下一条指令的类型;标志出栈处理模块,用于当原程序的下一条指令是标志出栈指令时,将该标志出栈指令将要储存的追踪标志设置为“1”;转移处理模块,用于当原程序的下一条指令是控制转移指令并满足转移条件时,计算转移的起始地址及目的地址,并储存该起始地址及目的地址;及寄存器出栈模块,用于将压入堆栈的寄存器的值弹出堆栈并返回原程序。一种计算机程序除错方法,用于中央处理器工作在系统管理 ...
【技术保护点】
一种计算机程序除错系统,用于中央处理器工作在在系统管理模式下对原程序的执行过程进行追踪,其特征在于,该系统包括: 追踪标志设置模块,用于将中央处理器的标志寄存器的追踪标志设置为“1”; 寄存器入栈模块,用于在执行完原程序的一条指 令后将除错过程中需要使用的寄存器的值压入堆栈; 操作码读取模块,用于读取原程序的下一条指令的操作码并判断该下一条指令的类型; 标志出栈处理模块,用于当原程序的下一条指令是标志出栈指令时,将该标志出栈指令将要储存的追踪标志设置为“ 1”; 转移处理模块,用于当原程序的下一条指令是控制转移指令并满足转移条件时,计算转移的起始地址及目的地址,并储存该起始地址及目的地址;及 寄存器出栈模块,用于将压入堆栈的寄存器的值弹出堆栈并返回原程序。
【技术特征摘要】
【权利要求1】一种计算机程序除错系统,用于中央处理器工作在在系统管理模式下对原程序的执行过程进行追踪,其特征在于,该系统包括:追踪标志设置模块,用于将中央处理器的标志寄存器的追踪标志设置为“1”;寄存器入栈模块,用于在执行完原程序的一条指令后将除错过程中需要使用的寄存器的值压入堆栈;操作码读取模块,用于读取原程序的下一条指令的操作码并判断该下一条指令的类型;标志出栈处理模块,用于当原程序的下一条指令是标志出栈指令时,将该标志出栈指令将要储存的追踪标志设置为“1”;转移处理模块,用于当原程序的下一条指令是控制转移指令并满足转移条件时,计算转移的起始地址及目的地址,并储存该起始地址及目的地址;及寄存器出栈模块,用于将压入堆栈的寄存器的值弹出堆栈并返回原程序。【权利要求2】如权利要求1所述的计算机程序除错系统,其特征在于,该系统还包括辅助除错模块,用于对原程序进行追踪原程序的执行过程以外的错误检测。【权利要求3】如权利要求1所述的计算机程序除错系统,其特征在于,所述除错过程中需要使用的寄存器包括计数寄存器、标志寄存器、代码段寄存器及指令指针寄存器。【权利要求4】如权利要求1所述的计算机程序除错系统,其特征在于,所述控制转移指令包括条件短转移指令、无条件短转移指令、条件近转移指令、无条件近转移指令、无条件远转移指令、近调用指令、远调用指令、近返回指令及远返回指令。【权利要求5】如权利要求1所述的计算机程序除错系统,其特征在于,所述起始地址及目的地址是存储在内存的环形缓冲区中。【权利要求6】一种计算机程序除错方法,用于中央处理器工作在系统管理模式下对原程序的执行过程进行追踪,其特征在于,该方法包括步骤:(a)将中央处理器的标志寄存器的追踪标志设置为“1”;(b)在执行完原程序的一条指令后将除错过程中需要使用的寄存器的值压入堆栈;(c)读取原程序的下一条指令的操作码并根据该操作码判断该下一条指令的类型;(d)若原程序的下一条指令是标志出栈指令,则将该标志出栈指令要储存的追踪标志设置为“1”,转到步骤(g);(e)若原程序的下一条指令是控制转移指令且满足转移条件,则计算转移的起始地址及目的地址,否则直接转到步骤(g);(f)储存所述起始地址及目的地址;及(g)将压入堆栈的寄存器的值弹出堆栈并返回原程序。【权利要求7】如权利要求6所述的计算机程序除错方法,其特征在于,所述步骤(f)与(g)之间包括步骤:对原程序进行追踪原程序的执行过程以外的错误检测。【权利要求8】如权利要求6所述的计算机程序除错方法,其特征在于,所述步骤(b)中压入堆栈的寄存器的值包括中断返回的段地址及中断返回的偏移地址,用INT_CS表示中断返回的段地址,用INT_IP表示中断返回的偏移地址,在步骤(e)中:若下一条指令是条件短转移指令并且满足转移条件,则转移的起始地址是INT_CS*10h+INT_IP,目的地址是INT_CS*10h+(INT_IP+(rel8+2)&FFh),其中...
【专利技术属性】
技术研发人员:赖庆育,
申请(专利权)人:鸿富锦精密工业深圳有限公司,鸿海精密工业股份有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。