一种反向调试方法、装置及调试器的制造方法_2

文档序号:9865389阅读:来源:国知局
述完成事件包括:
[0046] 获取所述代理模块对所述单步指令进行处理的程序运行状态信息;
[0047] 将所述程序运行状态信息记录到一逻辑存储空间中,所述逻辑存储空间用于所述 控制模块根据所述逻辑存储空间记录的所述程序运行状态信息进行指令回放。
[0048] 优选地,所述程序运行状态信息包括:用于记录所述代理模块根据所述单步指令 对内存进行的操作的内存操作记录帖、用于记录所述代理模块根据所述单步指令对寄存器 进行的操作的寄存器操作记录帖和所述代理模块完成所述内存操作记录帖和所述寄存器 操作记录帖时创建的结束帖。
[0049] 优选地,所述逻辑存储空间包括链表。
[0050] 本发明实施例还提供一种反向调试装置,用于一控制模块,包括:
[0051] 接收模块,用于在向一代理模块发送一单步指令之后,接收一事件或命令发生通 知,所述单步指令由所述控制模块根据用户输入的调试控制命令确定;
[0052] 判断模块,用于判断所述事件或命令发生通知是针对事件还是命令,获取一第一 判断结果;
[0053] 解析及处理模块,用于当所述第一判断结果为所述事件或命令发生通知针对命令 时,解析所述用户命令,获得所述事件或命令发生通知针对的第一命令;w及处理所述第一 命令;
[0054] 获取及处理模块,用于当所述第一判断结果为所述事件或命令发生通知针对事件 时,从所述代理模块获取所述事件或命令发生通知针对的所述单步指令的完成事件;W及 处理所述完成事件。 阳化5] 优选地,所述解析及处理模块包括:
[0056] 解析单元,用于当所述第一判断结果为所述事件或命令发生通知针对命令时,解 析所述用户命令,获得所述事件或命令发生通知针对的第一命令;
[0057] 判断单元,用于判断所述第一命令是否是指令单步,获取一第二判断结果;
[0058] 发送单元,用于当所述第二判断结果为所述第一命令是指令单步时,向所述代理 模块发送所述第一命令,使得所述代理模块能够对所述第一命令进行处理;
[0059] 转换及发送单元,用于当所述第二判断结果为所述第一命令不是指令单步时,将 所述第一命令转换为指令单步命令,W及向所述代理模块发送所述指令单步命令,使得所 述代理模块能够对所述指令单步命令进行处理。
[0060] 优选地,所述获取及处理模块包括:
[0061] 查询单元,用于向所述代理模块查询所述事件或命令发生通知针对的事件;
[0062] 接收单元,用于接收所述代理模块响应的所述所述单步指令的完成事件;
[0063] 获取单元,用于获取所述代理模块对所述单步指令进行处理的程序运行状态信 息;
[0064] 记录单元,用于将所述程序运行状态信息记录到一逻辑存储空间中,所述逻辑存 储空间用于所述控制模块根据所述逻辑存储空间记录的所述程序运行状态信息进行指令 回放。 阳〇化]优选地,所述程序运行状态信息包括:用于记录所述代理模块根据所述单步指令 对内存进行的操作的内存操作记录帖、用于记录所述代理模块根据所述单步指令对寄存器 进行的操作的寄存器操作记录帖和所述代理模块完成所述内存操作记录帖和所述寄存器 操作记录帖时创建的结束帖。
[0066] 优选地,所述逻辑存储空间包括链表。
[0067] 本发明实施例还提供一种包括W上所述的反向调试装置的调试器。
[0068] 从W上所述可W看出,本发明实施例至少具有如下有益效果:
[0069] 通过接收一事件或命令发生通知,判断所述事件或命令发生通知是针对事件还是 命令,根据判断结果的不同做不同处理,从而实现了异步调试模式下的反向调试。
【附图说明】 阳070] 图1表示指令录制帖的结构图;
[0071] 图2表示同步模式下的录制流程图;
[0072] 图3表示本发明实施例提供的一种反向调试方法的步骤流程图;
[0073] 图4表示异步模式下的录制流程图; W74] 图5表示回放过程流程图;
[00巧]图6表示本发明实施例提供的一种反向调试装置的结构框图。
【具体实施方式】
[0076] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图及具体实 施例对本发明实施例进行详细描述。
[0077] 图3表示本发明实施例提供的一种反向调试方法的步骤流程图,参照图3,发明实 施例提供一种反向调试方法,包括如下步骤:
[0078] 步骤301,在向一代理模块发送一单步指令之后,接收一事件或命令发生通知,所 述单步指令由所述控制模块根据用户输入的调试控制命令确定;
[0079] 步骤302,判断所述事件或命令发生通知是针对事件还是命令,获取一第一判断结 果;
[0080] 步骤303,当所述第一判断结果为所述事件或命令发生通知针对命令时,解析所述 用户命令,获得所述事件或命令发生通知针对的第一命令;W及处理所述第一命令;
[0081] 步骤304,当所述第一判断结果为所述事件或命令发生通知针对事件时,从所述代 理模块获取所述事件或命令发生通知针对的所述单步指令的完成事件;W及处理所述完成 事件。
[0082] 所述方法用于一控制模块。
[0083] 可见,通过上述方式,通过接收一事件或命令发生通知,判断所述事件或命令发生 通知是针对事件还是命令,根据判断结果的不同做不同处理,从而实现了异步调试模式下 的反向调试。
[0084] 其中,所述逻辑存储空间例如:包括链表。
[00化]本发明实施例中,所述处理所述第一命令可W包括:
[0086] 判断所述第一命令是否是指令单步,获取一第二判断结果;
[0087] 当所述第二判断结果为所述第一命令是指令单步时,向所述代理模块发送所述第 一命令,使得所述代理模块能够对所述第一命令进行处理;
[0088] 当所述第二判断结果为所述第一命令不是指令单步时,将所述第一命令转换为指 令单步命令,W及向所述代理模块发送所述指令单步命令,使得所述代理模块能够对所述 指令单步命令进行处理。
[0089] 本发明实施例中,所述从所述代理模块获取所述事件或命令发生通知针对的所述 单步指令的完成事件可W包括:
[0090] 向所述代理模块查询所述事件或命令发生通知针对的事件;
[0091] 接收所述代理模块响应的所述所述单步指令的完成事件;
[0092] 所述处理所述完成事件包括:
[0093] 获取所述代理模块对所述单步指令进行处理的程序运行状态信息;
[0094] 将所述程序运行状态信息记录到一逻辑存储空间中,所述逻辑存储空间用于所述 控制模块根据所述逻辑存储空间记录的所述程序运行状态信息进行指令回放。
[0095] 其中,所述程序运行状态信息可包括:用于记录所述代理模块根据所述单步指令 对内存进行的操作的内存操作记录帖、用于记录所述代理模块根据所述单步指令对寄存器 进行的操作的寄存器操作记录帖和所述代理模块完成所述内存操作记录帖和所述寄存器 操作记录帖时创建的结束帖。
[0096] 本较佳实施方式提供一种异步调试模式下的反向调试方法。本较佳实施方式设及 调试器的实现技术,尤其调试器在异步模式下实现反向调试的方法。具体的说,就是提供 一种手段,让调试器能够在异步模式下对被调程序的指令进行录制然后反向执行。如果要 在异步模式下实现反向调试,则需要对反向调试模块与异步调试框架进行相应的调整与整 合。
[0097] 本较佳实施方式的目的在于,整合调试器的反向调试模块和异步框架,提供一种 反向调试方法。
[0098] 为达到运一目的,本较佳实施方式设及W下几方面内容。
[0099] (1)运行调试控制
[0100] 反向调试的前提就是调试器对程序执行的每一条指令进行录制,在录制模式下用 户的任何一个运行控制命令最终都是W指令单步的形式来完成的。参照图3,其流程如下: 阳101] 1.步骤A.用户输入调试控制命令,控制模块解析该命令,如果是继续运行、源代 码单步或返回等操作则全部转换为指令单步命
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1