一种软件在线调试方法和系统的制作方法

文档序号:8223415阅读:486来源:国知局
一种软件在线调试方法和系统的制作方法
【技术领域】
[0001]本发明涉及程序调试领域,尤其涉及一种软件在线调试方法和系统。
【背景技术】
[0002]目前,在软件开发以及软件开发后的使用过程中,不可避免地会出现各种软件问题。现有的用于定位软件问题的方法包括:运行日志、调试命令、单步追踪。
[0003]上述方法中,运行日志和调试命令需要将产生日志和调试信息的调试指令通过硬编码的方式预先写入软件程序的相应位置。通过硬编码写入的调试指令不易更改和删除,也因为通过硬编码写入的调试不易删除,占用了内存,使得在任意软件位置对软件错误进行定位变得不可行。此外,当技术人员通过硬编码的方式将调试指令写入软件程序的相应位置后,还需要对写入调试指令的软件程序重新进行调度、编译、连接和运行,在软件程序重新运行后,原先软件错误的运行环境可能发生丢失/改变,使软件错误不易复现。
[0004]上述方法中,单步追踪为每执行完一条语句以后,就会停下来,显示运行情况,这种方法要求技术人员一直在现场以便对每条语句的运行结果进行分析,及时发现错误,并且这种方法更适合单任务的软件程序的调试。而在网络设备的实时软件程序中往往同时有几十个任务在运行、并且任务之间相互关联,单步追踪已不适应。

【发明内容】

[0005]本发明提供了一种软件在线调试方法和系统,以解决如何实现在调试过程中任意更改调试指令的问题。
[0006]为解决上述技术问题,本发明提供了一种软件在线调试方法,所述方法包括:
[0007]确定软件中的被追踪点;
[0008]当执行到所述被追踪点时,保存所述被追踪点处的软件当前运行环境;
[0009]调用已存储的在线调试指令,执行调试任务,输出在线调试信息;
[0010]恢复所述软件当前运行环境,从所述被追踪点处继续执行所述软件后续程序。
[0011]可选地,所述确定软件中的被追踪点具体包括:
[0012]通过命令行接收用户输入的设置指令,所述设置指令包括所述软件中被追踪点的地址;
[0013]将所述被追踪点地址处的二进制机器指令反汇编为汇编程序;
[0014]根据所述汇编程序确定所述被追踪点的位置。
[0015]可选地,所述当执行到所述被追踪点时,保存所述被追踪点处的软件当前运行环境具体包括:
[0016]当执行到所述被追踪点时,根据在被追踪点生成的跳转指令,跳转至已存储在所述软件中的保护/恢复环境指令;
[0017]执行所述保护/恢复环境指令中的保护环境指令,保存所述被追踪点处的软件当前运行环境。
[0018]可选地,所述调用已存储的在线调试指令,执行调试任务,输出在线调试信息具体包括:
[0019]执行所述保护/恢复环境指令;
[0020]当执行到所述保护/恢复环境指令中的跳转点时,通过所述跳转点,跳转至所述在线调试指令;
[0021]执行所述在线调试指令,输出在线调试信息。
[0022]可选地,所述恢复所述软件当前运行环境,从所述被追踪点处继续执行所述软件后续程序具体包括:
[0023]当输出在线调试信息后,从所述在线调试指令跳转回所述跳转点;
[0024]执行所述保护/恢复环境指令中的恢复环境指令,并跳转回所述被追踪点,从所述被追踪点处继续执行所述软件后续程序。
[0025]可选地,所述方法还包括:
[0026]在执行调试任务的过程中,通过命令行,接收用户输入的被追踪点状态查看指令;
[0027]根据所述查看指令,向所述用户反馈所述软件中被追踪点的状态信息,所述被追踪点的状态信息包括以下一种或多种:
[0028]被追踪点的执行时间、当前CPU各寄存器的状态、当前任务堆栈信息。
[0029]可选地,所述确定软件中的被追踪点之后还包括:
[0030]通过命令行,接收用户输入的被追踪点删除指令,所述被追踪点删除指令包括待删除的所述被追踪点的位置;
[0031]将待删除的所述被追踪点的位置还原为设置所述被追踪点之前的二进制机器指令;
[0032]当执行到原所述被追踪点的位置时,执行所述二进制机器指令。
[0033]为解决上述技术问题,本发明还提供了一种软件在线调试系统,所述系统包括:
[0034]被追踪点确定模块,用于确定软件中的被追踪点;
[0035]程序执行模块,用于在执行到所述被追踪点时,保存所述被追踪点处的软件当前运行环境;以及在调试结束后,恢复所述软件当前运行环境,从所述被追踪点处继续执行所述软件后续程序;
[0036]调试模块,用于在保存软件当前运行环境后,调用已存储的在线调试指令,执行调试任务,输出在线调试信息。
[0037]可选地,所述被追踪点确定模块,用于确定软件中的被追踪点,具体包括:
[0038]通过命令行接收用户输入的设置指令,所述设置指令包括所述软件中被追踪点的地址;
[0039]将所述被追踪点地址的二进制机器指令反汇编为汇编程序;
[0040]根据所述汇编程序确定所述被追踪点的位置。
[0041]可选地,所述程序执行模块,用于在执行到所述被追踪点时,保存所述被追踪点处的软件当前运行环境,具体包括:
[0042]当执行到所述被追踪点时,根据在被追踪点生成的跳转指令,跳转至已存储在所述软件中的保护/恢复环境指令;
[0043]执行所述保护/恢复环境指令中的保护环境指令,保存所述被追踪点处的软件当前运行环境。
[0044]可选地,所述调试模块,用于调用已存储的在线调试指令,执行调试任务,输出在线调试信息,具体包括:
[0045]执行所述保护/恢复环境指令;
[0046]当执行到所述保护/恢复环境指令中的跳转点时,通过所述跳转点,跳转至所述在线调试指令;
[0047]执行所述在线调试指令,输出在线调试信息。
[0048]可选地,所述程序执行模块,用于恢复所述软件当前运行环境,从所述被追踪点处继续执行所述软件后续程序,具体包括:
[0049]当输出在线调试信息后,从所述在线调试指令跳转回所述跳转点;
[0050]执行所述保护/恢复环境指令中的恢复环境指令,并跳转回所述被追踪点,从所述被追踪点处继续执行所述软件后续程序。
[0051 ] 可选地,所述系统还包括:
[0052]状态查看模块,用于在调试任务执行过程中,通过命令行,接收用户输入的被追踪点状态查看指令;
[0053]根据所述查看指令,向所述用户反馈所述软件中被追踪点的状态信息,所述被追踪点的状态信息包括以下一种或多种:
[0054]被追踪点的执行时间、当前CPU各寄存器的状态、当前任务堆栈信息。
[0055]可选地,所述系统还包括:
[0056]被追踪点删除模块,用于通过命令行,接收用户输入的被追踪点删除指令,所述被追踪点删除指令包括待删除的所述被追踪点的位置;
[0057]将待删除的所述被追踪点的位置还原为设置所述被追踪点之前的二进制机器指令;
[0058]当执行到原所述被追踪点的位置时,执行所述二进制机器指令。
[0059]通过应用本发明提供的一种软件在线调试方法和系统,在软件程序运行时,动态设置被追踪点,通过设置的被追踪点,保存被追踪点处的软件当前运行环境;调用已
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1