调试计算机程序的装置与方法制造方法及图纸

技术编号:2842714 阅读:340 留言:0更新日期:2012-04-11 18:40
调试器在多线程计算机程序中插入测控挂钩,其允许收集程序踪迹并提供与该程序踪迹对应的时间戳。当遇到第一线程中的断点时,取得对应于该断点的时间戳。其他线程可以继续执行,直到调试器能够暂停它们的执行为止。一旦已暂停所有线程的执行,就向回追溯每个线程的程序踪迹以达到这样的点:该点处的时间戳小于断点时间戳。然后逐条执行指令,直到指令的执行时间加上所述时间戳大致与所述断点时间戳相同。程序踪迹显示中的指令然后被高亮显示以指示在第一线程中遇到断点时可能正在执行的指令。

【技术实现步骤摘要】

本专利技术总体涉及计算机系统,更具体地说,涉及计算机程序的调试。
技术介绍
随着计算机硬件和软件的混合度和复杂度的增加,软件越来越难以调试。调试是在计算机程序的开发过程中发现问题或“程序缺陷”的过程。大多数现代的编程环境都包括调试器,该调试器提供测试和调试计算机程序的工具。公知的调试器允许用户在计算机程序中设置一个或多个断点,断点就是计算机程序的执行停止的点,这样可以检查程序的状态以确认程序按照设计执行。在多线程计算机程序中,定义了多个执行线程。不同的执行线程可以并行执行。在具有多个处理器的计算机系统中,不同的执行线程可以在不同的处理器上执行,提供线程的真正的实时并行处理。调试多线程计算机程序是困难的,因为每个线程独立于其他线程执行。当在其中一个线程中碰到(hit)断点时,调试器试图尽可能快地暂停其他线程,但在线程被暂停之前,该线程可能执行几千甚至几十万条要执行的指令。这种对突然停止所有线程的无能为力及其导致的额外“继续运行(run on)”,呈现给用户程序执行的不真实视图。使用公知的调试器,程序员可以在所有线程被暂停之后在线程之间切换,但是程序员不知道在其他线程中遇到断点之后,其中没有出现断点的线程中执行了多少条指令。出于此原因,程序员得到的调试器提供的数据可能不是十分有帮助,因为它没有准确地表示当第一线程中遇到断点时其他线程的状态。没有一种机构和方法来指示当在不同线程中遇到断点时线程正执行到何处,则程序员将继续忍受低效的工具来调试多处理器计算机系统上的多线程计算机程序带来的麻烦。
技术实现思路
根据优选实施例,调试器在多线程计算机程序中插入测控挂钩(instrumentation hooks),其允许收集程序踪迹并提供与该程序踪迹对应的时间戳。当遇到第一线程中的断点时,取得对应于该断点的时间戳。其他线程可以继续执行,直到调试器能够暂停它们的执行为止。一旦已暂停所有线程的执行,就向回追溯每个线程的程序踪迹以达到这样的点该点处的时间戳小于断点时间戳。然后逐条追溯指令,直到指令的执行时间加上所述时间戳大致与所述断点时间戳相同。程序踪迹显示中的指令然后被高亮显示以指示在第一线程中遇到断点时可能正在执行的指令。通过这种方式,没有解决不能突然暂停所有线程的问题,但是在所有线程被暂停以后提供了补偿以向程序员指示在第一线程中遇到断点时,每个线程正在执行的指令。如附图中所示出的,从以下对本专利技术的优选实施例的更具体的说明,本专利技术的上述以及其他特征和优点将是显而易见的。附图说明在下文中将结合附图描述本专利技术的优选实施例,其中相同的标号表示相同的元素,这些附图是图1是根据优选实施例的装置的方块图;图2是现有技术的被测控(instrumented)程序的方块图;图3是示出现有技术的将程序转换为被测控程序的方块图;图4是用于调试被测控程序的现有技术调试器的方块图;图5是用于调试多线程计算机程序的现有技术方法的流程图;图6是根据优选实施例的被测控程序的方块图;图7是示出根据优选实施例的将程序转换为被测控程序的方块图;图8是根据优选实施例的用于调试被测控程序的调试器的方块图; 图9是根据优选实施例的用于在调试器显示中指示当在不同线程中遇到断点时线程的停止点的方法的流程图;图10是根据优选实施例的图9中的步骤950的一个特定实施方式的流程图;图11是根据优选实施例的图9中的步骤960的一个特定实施方式的流程图;图12是示出当遇到断点时对线程中的停止点的指示的样例调试器显示;以及图13是示出当在图12的线程中遇到断点时对不同线程中的停止点的指示的样例调试器显示。具体实施例方式优选实施例指示了当第一线程中遇到断点时一个或多个其他线程的与时间相关的位置。所述其他线程可以在断点执行后继续运行一段时间,导致在第一线程中遇到断点之后在其他线程中执行许多指令。当在第一线程中遇到断点时,保存时间戳。在已暂停其他线程之后,调试器在每个线程中追溯到这样的点在该点的时间戳小于断点的保存的时间戳。然后调试器一次追踪一条指令,直到追溯点的时间戳加上指令的执行时间大致等于保存的时间戳。调试器然后标识当在第一线程中遇到断点时每个线程中正在执行的指令。优选实施例向程序员提供了信息以了解当在第一线程中遇到断点时,其他线程正在执行何种操作。参见图1,计算机系统100是根据本专利技术的优选实施例的装置的一种适当实施方式。计算机系统100是IBM eServer iSeries计算机系统。但是,本领域的技术人员将理解,本专利技术的机构和装置可同等地应用于任何计算机系统,无论该计算机系统是复杂的多用户计算装置,单用户工作站,还是嵌入式控制系统。如图1所示,计算机系统100包括处理器110,主存储器120,大容量存储装置接口130,显示接口140,以及网络接口150。这些系统组件通过使用系统总线160来互连。大容量存储装置接口130用于将大容量存储设备(例如直接访问存储设备155)连接到计算机系统100上。直接访问存储设备155的一种特定类型是可读和可写的CD RW驱动器,其可以将数据存储到CD RW 195或从CD RW 195读取数据。根据优选实施例的主存储器120包含数据121,操作系统122,多线程计算机程序123,测控机构124,被测控程序125,以及调试器127。数据121代表任何用作到计算机系统100中的任何程序的输入或来自其的输出的数据。操作系统122是本领域中称为i5/OS的多任务操作系统;但是,本领域的技术人员将理解,本专利技术的精神和范围不限于任何一个操作系统。多线程程序123代表任何包括多个执行的线程的计算机软件。测控机构124将测控挂钩插入多线程计算机程序123以允许调试多线程计算机程序123。测控机构124输出包含时间戳报告机构126的被测控程序125。时间戳报告机构126提供在被测控程序125输出的程序踪迹中的时间戳。调试器127包括线程位置计算机构128以计算当不同线程中出现断点时线程中可能正在执行哪条指令。线程位置计算机构128的操作将在以下更详细的讨论。一旦线程位置计算机构128标识了当不同线程中出现断点时可能正在执行的指令,线程位置显示机构129就向调试器127的用户提供可视指示以标识该指令。例如,该指令可以以彩色,反白显示,特殊标记,或任何其他适合的可视指示在显示装置上高亮显示给用户。以这种方式,通过指示当在不同线程中遇到断点时每个线程中可能正在执行的指令,调试器127允许有效地调试多线程计算机程序。借助此更准确的信息,程序员能够更好地执行对多线程计算机程序的调试。计算机系统100使用公知的虚拟寻址机制,使得计算机系统100的程序表现为似乎它们仅访问大型单个存储实体,而不是访问多个小型存储实体(如主存储器120和DASD设备155)。因此,当数据121,操作系统122,多线程计算机程序123,测控机构124,被测控程序125,以及调试器127示为位于主存储器120中时,本领域的技术人员将认识到,这些项不必同时全部完全包含在主存储器120中。还应注意到,这里使用的术语“存储器”一般地指计算机系统100的整个虚拟存储器,并且可以包括连接到计算机系统100的其他计算机系统的虚拟存储器。可以从一个或多个微处理器和/或集成电路来构建处理器110。本文档来自技高网...

【技术保护点】
一种装置,包括:至少一个处理器;连接到所述至少一个处理器的存储器;驻留在所述存储器中的多线程计算机程序,所述多线程计算机程序包括第一和第二线程;以及驻留在所述存储器中并由所述至少一个处理器执行的调试器,所述调试器执行所述多线程计算机程序并确定所述第二线程中与所述第一线程中的事件时间对应的估计位置。

【技术特征摘要】
US 2005-11-3 11/266,7371.一种装置,包括至少一个处理器;连接到所述至少一个处理器的存储器;驻留在所述存储器中的多线程计算机程序,所述多线程计算机程序包括第一和第二线程;以及驻留在所述存储器中并由所述至少一个处理器执行的调试器,所述调试器执行所述多线程计算机程序并确定所述第二线程中与所述第一线程中的事件时间对应的估计位置。2.如权利要求1中所述的装置,其中所述事件包括所述第一线程中的断点。3.如权利要求1中所述的装置,其中所述第二线程中的所述估计位置包括所述第二线程中的指令。4.如权利要求1中所述的装置,其中所述调试器还在图形显示中显示所述第二线程的所述估计位置。5.如权利要求4中所述的装置,其中所述调试器显示所述估计位置包括在所述图形显示中高亮显示所述第二线程中的指令。6.如权利要求1中所述的装置,其中所述多线程计算机程序包括当遇到所述第二线程中的追踪点时报告时间戳的时间戳报告机构。7.一种用于调试包括第一和第二线程的计算机程序的计算机实现的方法,所述方法包括以下步骤(A)确定所述第一线...

【专利技术属性】
技术研发人员:CL巴特斯JM桑托索索
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1