一种带性能显示的执行后软件调试系统及调试方法技术方案

技术编号:19176963 阅读:36 留言:0更新日期:2018-10-17 00:17
本发明专利技术揭示的内容和执行在计算设备上的计算机程序相关,属于计算机系统软件专业技术领域,更特别地专注于探测计算机程序错误的软件调试系统及调试方法。本发明专利技术提供了一种带性能显示的执行后软件调试系统框架,包含被调程序,被调程序运行操作系统,被调程序源代码文件,被调程序映射文件,显示设备,跟踪记录模块,跟踪分析模块,指令地址值数据库,软件模拟器,事件分析模块,性能分析模块,覆盖分析模块,调试器。本发明专利技术基于以上软件调试系统提出了进行调试的方法,实现了对软件的执行后调试能力,有助于解决找出计算机程序中可重现bug和不可重现bug。

A software debug system and debug method with performance display

The contents disclosed by the invention are related to the execution of computer programs on computer equipment, belonging to the professional technical field of computer system software, and especially focusing on software debugging systems and debugging methods for detecting computer program errors. The invention provides a post-execution software debugging system framework with performance display, which includes the program being debugged, the program being debugged running the operating system, the source code file of the program being debugged, the program mapping file being debugged, the display device, the tracking and recording module, the tracking and analyzing module, the instruction address value database, the software simulator, and the event. Analysis module, performance analysis module, coverage analysis module, debugger. Based on the above software debugging system, the invention proposes a debugging method, realizes the post-execution debugging ability of the software, and helps to find out the recurring bugs and non-recurring bugs in computer programs.

【技术实现步骤摘要】
一种带性能显示的执行后软件调试系统及调试方法
该专利技术的内容和执行在计算设备上的计算机程序相关,属于计算机系统软件专业
,更特别地专注于探测计算机程序错误的软件调试系统及调试方法。
技术介绍
软件调试器帮助很多计算机程序员找到计算机程序中的错误。这些错误通常叫做“bugs”。最通常的bug是计算机程序没有做它支持做的。对程序员来说,寻找bug通常是一项棘手的任务。寻找bug困难的一个原因是:一个bug可能在引起它的计算机指令执行后很长一段时间才表现出来。例如,第一个计算机指令执行计算输出结果,但该结果直到该指令执行后的数百万个指令执行后才会被第二个计算机指令使用。如果bug是一个可重现的bug,计算机程序员通常能使用调试器来快速确定bug的直接原因。在这个技艺中的一个普通的技能是认识术语“可重现bug”,它意味着程序每次以相同输入执行,bug都能显现。调试器能被用于确定问题原因,然而传统的调试器具有能力限制。使用传统调试器经常花费程序员数天或数星期的时间来找寻长时间才能重现或不能重现的bug。
技术实现思路
本专利技术的目的:本专利技术的目的是为了更好的帮助程序开发人员找出程序中的bug,包括可重现的bug和不可重现的bug。本专利技术的技术方案:1.一种带性能显示的执行后软件调试系统,包括:调试器、软件模拟器、跟踪记录模块、跟踪分析模块、事件分析模块、性能分析模块、覆盖分析模块、指令地址值数据库、软件模拟器,其中;a)跟踪记录模块是用来记录被调程序跟踪数据的软件模块或者硬件设备。它能够将被调程序执行时的指令开始执行时间、指令地址、指令访问的寄存器、指令访问的内存地址、指令读或写指示标志、内存或寄存器数据等信息组织成跟踪数据,然后记录下来,以备分析模块使用。跟踪记录模块不是必需的,被调程序所在计算机处理器可以输出记录跟踪数据,或者软件模拟器执行被调程序时,由软件模拟器记录跟踪数据。b)跟踪分析模块用于跟踪数据的分析生成指令地址值数据库。初始时,跟踪分析模块会设置内存为不可知的值。跟踪分析模块填充不可知的值到数据库中,那样在给定的时间周期中,在指令地址值数据库中就存储了每个内存单元的值。跟踪分析模块不是必需的,它的功能可以集成到跟踪记录模块中,由跟踪记录模块完成。c)指令地址值数据库是用来保存指令地址、指令机器码、指令访问寄存器号、指令访问寄存器的值、指令访问内存地址、指令访问内存值的一个数据库。保存的这些数据简称为指令地址值。d)软件模拟器用来模拟被调程序执行的软件。它能够根据某时刻内存或寄存器的值,模拟被调程序机器指令的执行,它能够解析机器指令,分析机器指令时要读写寄存器还是内存,并将执行后引起的内存或寄存器值的改变记录到指令地址值数据库中。软件模拟器执行被调程序时也可以记录跟踪数据。e)事件分析模块是进行事件分析的软件模块。它能够分析出操作系统事件发生的时刻、地址、执行时间等信息,并将这些信息组织成事件数据。事件数据可以交由调试器,也可以直接输出到输出设备。事件分析模块根据操作系统事件发生时的一系列的特征信息来分析跟踪数据,识别被调程序运行过程中包含的任务,发现被调程序执行过程中任务运行所发生的操作系统事件,例如任务切换事件、中断事件。f)性能分析模块是进行被调程序一个机器指令序列执行时间性能分析的软件模块。它能够分析出一个机器指令序列的执行时间性能数据。通常调试器会将源代码行对应的一个机器指令序列交由性能分析模块分析其性能。在跟踪数据中记录了指令序列中第一条指令的开始执行时间,以及指令序列后续指令的开始执行时间,用指令序列后续指令开始执行时间减去指令序列中第一条指令的开始执行时间就得到了指令序列执行的时间。g)覆盖分析模块是进行被调程序一个机器指令序列覆盖分析的软件模块。它能够分析出一个机器指令序列是否被执行过。通常调试器会将源代码行对应的一个机器指令序列交由覆盖分析模块分析是否执行过。覆盖分析模块在跟踪数据中搜索指定的指令序列,如果是执行过的,就能够在跟踪数据中搜索到。h)调试器是一个程序,它响应程序调试人员通过输入设备输入的调试操作指令,处理之后,输出调试输出数据到输出设备。调试器能够通过调试请求来控制、检查、修改被调程序。被调程序和调试器可以在同一个计算机中,也可以在不同的计算机中。如果被调程序和调试器不在同一计算机中,两个计算机通过一个连接通路连接,调试器通过该连接通路对被调程序进行交叉调试。调试器能够给被调程序添加断点,当被调程序执行遇到断点时,调试器能够控制被调程序停止执行。调试器在被调程序停止时读取当前被调程序源代码行、当前寄存器、变量值等程序现场交由输出设备显示。进行执行后调试时,调试器将被调程序指令交由软件模拟器来执行,并从软件模拟器获取执行后程序现场的交由输出设备显示。进行执行后调试时,调试器能够从性能分析模块中获得源程序及相关性能数据,能够从覆盖分析模块中获得源程序是否执行的数据,将这些数据集成到程序现场中交由,输出设备显示。2.基于带性能显示的执行后软件调试系统框架所提出的调试方法包括步骤:步骤1:根据跟踪数据中的记录模拟执行计算机程序;步骤1.1:跟踪记录模块从被调程序的执行中定期记录跟踪数据。步骤1.2:程序调试人员通过输入设备操作调试器,在被调程序中设置大量执行断点。步骤1.3:软件模拟器按跟踪数据,模拟部分被调程序的执行,直到大量条件(断点)中的某个符合时停止模拟执行。步骤2:事件显示;步骤2.1:事件调试人员通过输入设备选择要调试的事件并交由调试器,调试器将选择的事件传递给事件分析模块,事件分析模块根据事件访存特征来确定对应的被调程序运行操作系统机器指令序列,并称为事件相关机器指令序列。步骤2.2:事件分析模块通过在跟踪数据中查找事件相关机器指令序列可以搜索到事件。步骤2.3:事件分析模块根据找到的事件相关机器指令序列的执行时间来确定事件的执行时间。步骤2.4:事件分析模块搜索指令地址值数据库找到某时刻任务关联的数据。步骤2.5:事件分析模块计算出事件数据,将该数据交由调试器。步骤2.6:调试器将事件数据组织成输出数据交由输出设备显示。步骤3:性能显示;步骤3.1:被调程序映射文件可访问。步骤3.2:性能分析模块或者调试器根据被调程序映射文件中的信息,将被调程序源代码文件源代码行转换为机器指令序列。步骤3.3:性能分析模块搜索跟踪数据,直到找到机器指令序列。步骤3.4:性能分析模块确定下条机器指令序列的执行时间点。步骤3.5:性能分析模块从下条机器指令序列的执行时间点减去该条机器指令序列的执行时间点,计算出执行该条指令所花费的时间性能,将该数据交由调试器。步骤3.6:调试器通过输出设备来显示源代码行对应的执行时间性能。步骤4:显示覆盖率分析数据。步骤4.1:被调程序映射文件可访问。步骤4.2:覆盖分析模块或者调试器根据被调程序映射文件中的信息,将被调程序源代码文件源代码行转换为机器指令序列。步骤4.3:覆盖分析模块搜索跟踪数据以确定是否被调程序源代码文件源代码行对应的每条机器指令都被执行。如果搜索到就认为是执行了,将该数据交由调试器。步骤4.4:调试器通过在输出设备中显示一个标志来表示源代码行对应的机器指令都被执行。进一步的,所述步骤2.1中被调程序运行操作系本文档来自技高网...

【技术保护点】
1.一种带性能显示的执行后软件调试系统框架,其特征在于包括以下结构单元:a)跟踪记录模块是用来记录被调程序跟踪数据的软件模块或者硬件设备;它能够将被调程序执行时的指令开始执行时间、指令地址、指令访问的寄存器、指令访问的内存地址、指令读或写指示标志、内存或寄存器数据等信息组织成跟踪数据,然后记录下来,以备分析模块使用;跟踪记录模块不是必需的,被调程序所在计算机处理器可以输出记录跟踪数据,或者软件模拟器执行被调程序时,由软件模拟器录跟踪数据;b)跟踪分析模块用于跟踪数据的分析生成指令地址值数据库;初始时,跟踪分析模块会设置内存为不可知的值;跟踪分析模块填充不可知的值到数据库中,那样在给定的时间周期中,在指令地址值数据库中就存储了每个内存单元的值;跟踪分析模块不是必需的,它的功能可以集成到跟踪记录模块中,由跟踪记录模块完成;c)指令地址值数据库是用来保存指令地址、指令机器码、指令访问寄存器号、指令访问寄存器的值、指令访问内存地址、指令访问内存值的一个数据库;保存的这些数据简称为指令地址值;d)软件模拟器用来模拟被调程序执行的软件;它能够根据某时刻内存或寄存器的值,模拟被调程序机器指令的执行,它能够解析机器指令,分析机器指令时要读写寄存器还是内存,并将执行后引起的内存或寄存器值的改变记录到指令地址值数据库中。软件模拟器执行被调程序时也可以记录跟踪数据;e)事件分析模块是进行事件分析的软件模块;它能够分析出操作系统事件发生的时刻、地址、执行时间等信息,并将这些信息组织成事件数据;事件数据可以交由调试器,也可以直接输出到输出设备;事件分析模块根据操作系统事件发生时的一系列的特征信息来分析跟踪数据,识别被调程序运行过程中包含的任务,发现被调程序执行过程中任务运行所发生的操作系统事件,例如任务切换事件、中断事件;f)性能分析模块是进行被调程序一个机器指令序列执行时间性能分析的软件模块;它能够分析出一个机器指令序列的执行时间性能数据;通常调试器会将源代码行对应的一个机器指令序列交由性能分析模块分析其性能;在跟踪数据中记录了指令序列中第一条指令的开始执行时间,以及指令序列后续指令的开始执行时间,用指令序列后续指令开始执行时间减去指令序列中第一条指令的开始执行时间就得到了指令序列执行的时间;g)覆盖分析模块是进行被调程序一个机器指令序列覆盖分析的软件模块;它能够分析出一个机器指令序列是否被执行过;通常调试器会将源代码行对应的一个机器指令序列交由覆盖分析模块分析是否执行过;覆盖分析模块在跟踪数据中搜索指定的指令序列,如果是执行过的,就能够在跟踪数据中搜索到;h)调试器是一个程序,它响应程序调试人员通过输入设备输入的调试操作指令,处理之后,输出调试输出数据到输出设备;调试器能够通过调试请求来控制、检查、修改被调程序;被调程序和调试器可以在同一个计算机中,也可以在不同的计算机中;如果被调程序和调试器不在同一计算机中,两个计算机通过一个连接通路连接,调试器通过该连接通路对被调程序进行交叉调试;调试器能够给被调程序添加断点,当被调程序执行遇到断点时,调试器能够控制被调程序停止执行;调试器在被调程序停止时读取当前被调程序源代码行、当前寄存器、变量值等程序现场交由输出设备显示;进行执行后调试时,调试器将被调程序指令交由软件模拟器来执行,并从软件模拟器获取执行后程序现场的交由输出设备显示;进行执行后调试时,调试器能够从性能分析模块中获得源程序及相关性能数据,能够从覆盖分析模块中获得源程序是否执行的数据,将这些数据集成到程序现场中交由,输出设备显示。...

【技术特征摘要】
1.一种带性能显示的执行后软件调试系统框架,其特征在于包括以下结构单元:a)跟踪记录模块是用来记录被调程序跟踪数据的软件模块或者硬件设备;它能够将被调程序执行时的指令开始执行时间、指令地址、指令访问的寄存器、指令访问的内存地址、指令读或写指示标志、内存或寄存器数据等信息组织成跟踪数据,然后记录下来,以备分析模块使用;跟踪记录模块不是必需的,被调程序所在计算机处理器可以输出记录跟踪数据,或者软件模拟器执行被调程序时,由软件模拟器录跟踪数据;b)跟踪分析模块用于跟踪数据的分析生成指令地址值数据库;初始时,跟踪分析模块会设置内存为不可知的值;跟踪分析模块填充不可知的值到数据库中,那样在给定的时间周期中,在指令地址值数据库中就存储了每个内存单元的值;跟踪分析模块不是必需的,它的功能可以集成到跟踪记录模块中,由跟踪记录模块完成;c)指令地址值数据库是用来保存指令地址、指令机器码、指令访问寄存器号、指令访问寄存器的值、指令访问内存地址、指令访问内存值的一个数据库;保存的这些数据简称为指令地址值;d)软件模拟器用来模拟被调程序执行的软件;它能够根据某时刻内存或寄存器的值,模拟被调程序机器指令的执行,它能够解析机器指令,分析机器指令时要读写寄存器还是内存,并将执行后引起的内存或寄存器值的改变记录到指令地址值数据库中。软件模拟器执行被调程序时也可以记录跟踪数据;e)事件分析模块是进行事件分析的软件模块;它能够分析出操作系统事件发生的时刻、地址、执行时间等信息,并将这些信息组织成事件数据;事件数据可以交由调试器,也可以直接输出到输出设备;事件分析模块根据操作系统事件发生时的一系列的特征信息来分析跟踪数据,识别被调程序运行过程中包含的任务,发现被调程序执行过程中任务运行所发生的操作系统事件,例如任务切换事件、中断事件;f)性能分析模块是进行被调程序一个机器指令序列执行时间性能分析的软件模块;它能够分析出一个机器指令序列的执行时间性能数据;通常调试器会将源代码行对应的一个机器指令序列交由性能分析模块分析其性能;在跟踪数据中记录了指令序列中第一条指令的开始执行时间,以及指令序列后续指令的开始执行时间,用指令序列后续指令开始执行时间减去指令序列中第一条指令的开始执行时间就得到了指令序列执行的时间;g)覆盖分析模块是进行被调程序一个机器指令序列覆盖分析的软件模块;它能够分析出一个机器指令序列是否被执行过;通常调试器会将源代码行对应的一个机器指令序列交由覆盖分析模块分析是否执行过;覆盖分析模块在跟踪数据中搜索指定的指令序列,如果是执行过的,就能够在跟踪数据中搜索到;h)调试器是一个程序,它响应程序调试人员通过输入设备输入的调试操作指令,处理之后,输出调试输出数据到输出设备;调试器能够通过调试请求来控制、检查、修改被调程序;被调程序和调试器可以在同一个计算机中,也可以在不同的计算机中;如果被调程序和调试器不在同一计算机中,两个计算机通过一个连接通路连接,调试器通过该连接通路对被调程序进行交叉调试;调试器能够给被调程序添加断点,当被调程序执行遇到断点时,调试器能够控制被调程序停止执行;调试器在被调程序停止时读取当前被调程序源代码行、当前寄存器、变量值等程序现场交由输出设备显示;进行执行后调试时,调试器将被调程序指令交由软件模拟器来执行,并从软件模拟器获取执行后程序现场的交由输出设备显示;进行执行后调试时,调试器能够从性能分析模块中获得源程序及相关性能数据,能够从覆盖分析模块中获得源程序是否执行的数据,将这些数据集成到程序现场中交由,输出设备显示。2.基于带性能显示的执行后软件调试系统框架所提出的调试方法,其特征在于:包括步骤:步骤1:根据跟踪数据中的记录模拟执行计算机程序;步骤1.1:跟踪记录模块从被调程序的执行中定期记录跟踪数据;步骤1.2:程序调试人员通过输入设备操作调试器,在被调程序中设置大量执行断点;步骤1.3:软件模拟器按跟...

【专利技术属性】
技术研发人员:麦先根李运喜张旻田丹卫进魏国
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1