用于追踪程序执行状态的方法与多核心处理系统的利记博彩app

文档序号:10665722阅读:484来源:国知局
用于追踪程序执行状态的方法与多核心处理系统的利记博彩app
【专利摘要】一种用于追踪程序执行状态的方法与多核心处理系统。该用于追踪程序执行状态的方法包括:提供一处理器,其中该处理器包括第一核心与第二核心;藉由该第一核心运行一操作系统,并藉由该第二核心运行一程序;在该第二核心运行该程序的期间,藉由该第一核心利用一追踪模块来追踪该第二核心的执行状态,以获取该第二核心运行该程序而产生的原始执行数据;以及储存关联于该程序的该原始执行数据。本发明使得程序设计人员可依据完整的原始执行数据而得知程序的详细执行历程,甚至可从完整的原始执行数据发现程序编译器无法发现的错误,从而提升软件程序开发上的便利性。
【专利说明】
用于追踪程序执行状态的方法与多核心处理系统
技术领域
[0001]本发明涉及一种程序的检错方法,且特别涉及一种用于追踪程序执行状态的方法与多核心处理系统。
【背景技术】
[0002]现在有许多电子装置使用处理器(processor)作为控制中枢,处理器运行软件程序以提供电子装置的各项功能。所述软件程序可包括操作系统、应用程序或驱动程序等。一般来说,当电子装置发生系统当机时,操作者或程序设计人员不一定可清楚得知问题的发生点。虽然说当前的操作系统可在发生死机前储存一份核心存储器的转储作为用来检错的参考信息,但由于上述参考信息仅仅记录死机发生当下的一些片断信息,因此其并不足以解决问题或完整重现问题发生的过程。
[0003]此外,在处理器运行程序的过程中,有些错误是要整个程序被连续执行才会显现。基此,程序设计人员时常难以依据片断的信息而确切的得知错误发生的原因。也就是说,当程序设计人员欲重新复制相同的错误来进行检错时,往往需要耗费非常多的时间与精力。甚至是,在程序执行数据不足够的情况下,有些错误的发生情境并不一定可以被完整重现。
[0004]因此,需要一种用于追踪程序执行状态的方法与多核心处理系统来解决上述问题。

【发明内容】

[0005]有鉴于此,本发明提供一种用于追踪程序执行状态的方法与多核心处理系统,可将多个核心其中之一执行程序的执行过程完整地记录下来,以利于软件程序的开发。
[0006]本发明提出一种用于追踪程序执行状态的方法,该用于追踪程序执行状态的方法包括:提供一处理器,其中该处理器包括第一核心与第二核心;藉由该第一核心运行一操作系统,并藉由该第二核心运行一程序;在该第二核心运行该程序的期间,藉由该第一核心利用一追踪模块来追踪该第二核心的执行状态,以获取该第二核心运行该程序而产生的原始执行数据;以及储存关联于该程序的该原始执行数据。
[0007]在本发明的一实施例中,在上述的藉由第一核心运行操作系统,并藉由第二核心运行程序的步骤之前,所述方法还包括下列步骤:初始化第一核心以及第二核心,致使第一核心处于执行状态且第二核心处于准备状态。当第一核心处于执行状态时,藉由第一核心对操作系统执行初始化程序并向操作系统注册追踪模块。
[0008]在本发明的一实施例中,在上述当第一核心处于执行状态时,藉由第一核心对操作系统执行初始化程序并向操作系统注册追踪模块的步骤之后,所述方法还包括下列步骤:将第二核心从准备状态转换为执行状态。
[0009]在本发明的一实施例中,上述的储存原始执行数据的步骤包括下列步骤:将属于机械语言格式的原始执行数据转换为属于低级语言格式的原始执行数据;储存属于低级语言格式的原始执行数据于储存装置中。
[0010]在本发明的一实施例中,上述的储存装置为外部储存装置或内部储存装置。
[0011 ] 在本发明的一实施例中,上述的方法还包括下列步骤:提供程序语言转换模块,并利用程序语言转换模块将原始执行数据转换为属于高级语言格式的被追踪程序代码。
[0012]在本发明的一实施例中,上述处理器还包括第三核心,而所述方法还包括下列步骤:藉由第三核心运行另一程序;在第三核心运行另一程序的期间,藉由第一核心利用追踪模块来追踪第三核心,以获取第三核心运行另一程序而产生的另一原始执行数据;储存关联于另一程序的另一原始执行数据。
[0013]从另一观点来看,本发明提出一种用于追踪程序执行状态的多核心处理系统,其包括相互耦接的存储器与处理器,此处理器包括第一核心以及第二核心。此存储器储存操作系统与追踪模块。第一核心运行操作系统,第二核心运行程序。在第二核心运行程序的期间,第一核心利用追踪模块来追踪第二核心的执行状态,以获取第二核心运行该程序而产生的原始执行数据。第一核心将关联于程序的原始执行数据传送至储存装置,以储存原始执行数据。
[0014]本发明还提出一种用于追踪程序执行状态的多核心处理系统,该用于追踪程序执行状态的多核心处理系统包括:一存储器,该存储器储存一操作系统与一追踪模块;一第一核心,该第一核心耦接该存储器并运行该操作系统;以及一第二核心,该第二核心耦接该存储器并运行一程序,其中,在该第二核心运行该程序的期间,该第一核心利用该追踪模块来追踪该第二核心的执行状态,以获取该第二核心运行该程序而产生的原始执行数据,其中该第一核心将关联于该程序的该原始执行数据传送至一储存装置,以储存该原始执行数据。
[0015]基于上述,在本发明的实施例中,在第二核心运行程序的期间,运行操作系统的第一核心可利用追踪模块来追踪第二核心的执行状态,以获取第二核心运行该程序而产生的原始执行数据。也就是说,多核心处理器里的第一核心经配置而运行操作系统,多核心处理器里的第二核心经配置而运行应用程序或驱动程序,且第一核心还经配置而用来追踪与记录第二核心在运行程序期间所提取(fetch)的指令、执行上述指令所产生的参数以及寄存器的存取状态等原始执行数据。
[0016]为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附的附图作详细说明如下。
【附图说明】
[0017]图1是依照本发明一实施例所绘示的多核心处理系统的示意图。
[0018]图2是依照本发明一实施例所绘示的一种用于追踪程序执行状态的方法的流程图。
[0019]图3是依照本发明一实施例所绘示的多核心处理系统的示意图。
[0020]图4是依照本发明一实施例所绘示的一种用于追踪程序执行状态的方法的流程图。
[0021]图5是依照本发明一实施例所绘示的用于追踪程序执行状态的方法的示意图。
[0022]主要组件符号说明:
[0023]10、50、70多核心处理系统
[0024]100存储器
[0025]10a操作系统
[0026]100b、100d程序
[0027]10c追踪模块
[0028]200、200a处理器
[0029]210第一核心
[0030]220第二核心
[0031]211控制单元
[0032]212算术逻辑单元
[0033]213寄存器列
[0034]221控制单元
[0035]222算术逻辑单元
[0036]223寄存器列
[0037]300储存装置
[0038]300a、300b原始执行数据
[0039]800程序语言转换模块
[0040]900被追踪程序代码
[0041]230第三核心
[0042]S201?S204本发明一实施例所述的用于追踪程序执行状态的方法的各步骤
[0043]S401?S409本发明一实施例所述的用于追踪程序执行状态的方法的各步骤
【具体实施方式】
[0044]在本案说明书全文(包括权利要求书)中所使用的“耦接” 一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以通过其他装置或某种连接手段而间接地连接至该第二装置。另外,凡可能之处,在附图及实施方式中使用相同标号的组件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的组件/构件/步骤可以相互参照相关说明。
[0045]图1是依照本发明一实施例所绘示的多核心处理系统的示意图。请参照图1,本实施例的多核心处理系统10包括存储器100、处理器200以及储存装置300,而处理器200耦接存储器100以及储存装置300。
[0046]存储器100例如是随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory, ROM)、闪存(Flash memory)或其他类型的储存媒介,本发明对此并不限制。存储器100储存有软件组件,以供处理器200存取并执行。在本实施例中,存储器100储存有操作系统100a、程序10b以及追踪模块100c。操作系统10a是一种管理计算器装置的硬件与软件资源的程序,例如是Iinux操作系统,但本发明并不以此为限。
[0047]程序10b可以是应用程序或硬件设备的驱动程序。举例来说,程序10b可以是通用串行总线(Universal Serial Bus, USB)传输接口的驱动程序,程序10b也可以是具有音乐播放功能的应用程序,但本发明并不以此为限。另外需要说明的是,在本实施例中,操作系统10a与程序10b皆储存于存储器100之中,但本发明并不以此为限。在其他实施例中,操作系统10a与程序10b可分别储存于相异的储存媒介之中。举例来说,操作系统10a可储存于系统存储器当中,而程序10b可储存于内接硬盘或外接硬盘当中。在本实施例中,追踪模块10c可以是储存于存储器100里的软件程序或指令,用来追踪被处理器200执行的程序100b。
[0048]处理器200为多核心处理器并且包括多个核心(core),且本发明对于处理器200里核心的数量并无限制。只是,为了清楚说明本发明,本实施例将以双核心处理器为例进行说明,但本发明并不以此为限。处理器200包括第一核心210以及第二核心220。第一核心210以及第二核心220例如是ARM公司开发的ARM、Hitachi公司开发的H8/300、IBM公司开发的 System/370、Intel 公司开发的 X86 及 X86_64、Motorola 公司开发的 Motorola68000、MIPS公司开发的MIPS、HP公司开发的PA-RISC等等,在此并不限制其范围。
[0049]第一核心210包括控制单元(control unit,CU) 211、算术逻辑单元(ArithmeticLogic Unit,ALU) 212以及寄存器列213。控制单元211负责控制数据流与指令流,算术逻辑单元213负责算术运算与逻辑运算。简单来说,第一核心210藉由控制单元211提取指令与传输数据,算术逻辑单元213依据控制单元211所提取的指令进行运算与处理。寄存器列213可以包括多个寄存器,是第一核心210用来暂时存放数据与记录执行状态的地方。举例来说,寄存器列213可包括累加器、地址寄存器、指令寄存器、程序计数器或标记寄存器等等,本发明对此不限制。
[0050]相似的,第二核心220包括控制单元221、算术逻辑单元222以及寄存器列223。控制单元221、算术逻辑单元222以及寄存器列223的功能分别与控制单元211、算术逻辑单元212以及寄存器列213相同或相似,在此不再赘述。
[0051]储存装置300耦接处理器200,以供处理器200进行数据的存取。储存装置300可以是内部储存装置或外部储存装置,所谓的内部储存装置代表与处理器200设置于同一电子装置内的储存设备,所谓的外部储存装置代表与处理器200设置于相异的电子装置内的储存设备。举例来说,储存装置300可以是USB随身盘或与处理器200设置于同一电子装置内的闪存(NAND flash)。
[0052]图2是依照本发明一实施例所绘示的一种用于追踪程序执行状态的方法的流程图。本实施例的方法适用于图1所示的多核心处理系统10,以下即搭配图1与图2所示的各模块与组件来说明本实施例的详细步骤。
[0053]在步骤S201,提供处理器200,其中此处理器200包括第一核心210与第二核心220。之后,在步骤S202,第一核心210运行操作系统100a,并且第二核心220运行程序10b0也就是说,第一核心210与第二核心220分别执行不同的任务。第一核心210藉由运行操作系统10a来管理整个系统的硬件与软件资源,第二核心220藉由运行程序10b来完成特定的功能。
[0054]在步骤S203,在第二核心220运行程序10b的期间,第一核心210利用追踪模块10c来追踪第二核心220的执行状态,以获取第二核心220运行程序10b而产生的原始执行数据300a。进一步来说,当第二核心220执行程序10b时,第二核心220的控制单元221从存储器100提取记录于程序10b内的指令,并解码这些指令成为算术逻辑单元212可以处理的运算。在本实施例中,第一核心210执行追踪模块10c来追踪第二核心运行程序10b的执行状态。详细来说,在第二核心220运行程序10b的过程中,追踪模块10c将寄存器列223中被第二核心220使用过的寄存器与这些寄存器的内部数据记录下来。举例来说,藉由记录指令寄存器里的内容,第二核心220曾经执行过的指令可以被完整的记录至原始执行数据之中。在步骤S204,储存装置300储存关联于程序10b的原始执行数据300a。换言之,第一核心210将关联于程序10b的原始执行数据300a传送至储存装置300,以储存原始执行数据300a。基此,通过原始执行数据300a的记录,程序设计人员甚至可发现程序编译器无法发现的错误,像是存储器地址的读写错误等。
[0055]然而,本发明的实现方式不限于上述说明,可以对于实际的需求而酌予变更上述实施例的内容。例如,在本发明的其他实施例中,可将属于低级语言格式的原始执行数据转换为高级语言格式,好让程序设计人员可以更快速且容易的了解第二核心运行程序的实际执行状态。再者,追踪模块也可将寄存器列中的地址寄存器里的数据记录下来,而产生包括存储器地址数据的原始执行数据,从而获取将程序执行期间的存储器地址的读写状态。此夕卜,通过控制第一核心与第二核心的状态转换,可避免在第一核心尚未执行到追踪模块之前第二核心就已经执行程序而导致无法完整记录到程序的被执行状态。以下则举一实施例详细说明。
[0056]图3是依照本发明一实施例所绘示的多核心处理系统的示意图。图4是依照本发明一实施例所绘示的一种用于追踪程序执行状态的方法的流程图。需先说明的是,本实施例的多核心处理系统50还包括程序语言转换模块800,程序语言转换模块800可由软件组件、硬件组件或其组合的实现方式而得,在此不加以限制。软件组件例如是原始码、应用软件等软件程序等。硬件组件例如是中央处理单元,或是其他可程序化的一般用途或特殊用途的硬件电路。
[0057]请参照图3与图4,在步骤S401,提供一处理器,其中处理器包括第一核心210与第二核心220。在步骤S402,初始化第一核心210以及第二核心220,致使第一核心210处于执行状态(run state)且第二核心220处于准备状态(ready state)。也就是说,在第一核心210执行操作系统10a以及第二核心220执行程序10b之前,第一核心210执行硬件初始化并且处于执行状态且第二核心220执行硬件初始化并且处于准备状态。
[0058]在步骤S403,当第一核心210处于执行状态时,藉由第一核心210对操作系统10a执行初始化程序并向操作系统10a注册追踪模块100c。如此,操作系统10a可将追踪模块10c排入第一核心210将要执行的任务内。在第一核心210、操作系统10a以及追踪模块10c皆准备就绪的情况下,在步骤S404,将第二核心220从准备状态转换为执行状态。在步骤S405,在第二核心运行程序10b的期间,藉由第一核心210利用追踪模块10c来追踪第二核心220的执行状态,以获取第二核心220运行程序10b而产生的原始执行数据 300a。
[0059]在步骤S406,将属于机械语言格式的原始执行数据300a转换为属于低级语言格式的原始执行数据300a。进一步来说,第二核心220所执行的程序10b中的指令已经由编码成为机械语言格式,也就是“O”与“ I ”的组合序列。基此,追踪模块10c可将属于机械语言格式的原始执行数据300a先转换为属于低级语言格式的原始执行数据300a,像是将属于二进制序列的原始执行数据300a转换为带有简易指令的汇编语言。
[0060]之后,在步骤S407,储存属于低级语言格式的原始执行数据300a于储存装置300中。在步骤S408,提供程序语言转换模块800。在步骤S409,利用程序语言转换模块800将原始执行数据300a转换为属于高级语言格式的被追踪程序代码900。程序语言转换模块800可将属于低级语言格式的原始执行数据300a转换为高级语言格式的被追踪程序代码900。低级语言格式例如是汇编语言(assembly language)等,而高级语言格式例如是C语言或C++语言等。也就是说,在本实施例中,原始执行数据300a可以以汇编程序代码的样式储存于储存装置300之中,当程序设计人员想要了解程序10b的执行状态时,程序语言转换模块800可将原始执行数据300a转换为属于高级语言格式的被追踪程序代码900。如此,程序设计人员可依据更易读的被追踪程序代码900来了解第二核心220执行程序10b的执行历程。
[0061]虽然上述实施例皆以第一核心与第二核心为例进行说明,但本发明并不限制于此。在其他实施例中,第一核心可利用追踪模块来追踪两个以上的程序分别被相异的处理核心运行的执行状态。图5是依照本发明一实施例所绘示的用于追踪程序执行状态的方法的示意图。请参照图5,除了第一核心220以及第二核心230,本实施例的处理器200a还包括第三核心230。在本实施例中,第一核心210执行追踪模块100c,以分别追踪第二核心220运行程序10b以及第三核心230运行程序10d的寄存器存取状态与数据。
[0062]相似地,第二核心220运行程序100b。在第二核心220运行程序10b的期间,第一核心210利用追踪模块10c来追踪第二核心220,以获取第二核心220运行程序10b而产生的原始执行数据300a。另一方面,第三核心230运行程序100d。在第三核心230运行程序10d的期间,藉由第一核心210利用追踪模块10c来追踪第三核心230,以获取第三核心230运行程序10d而产生的原始执行数据300b。如此,第一核心210可将关联于程序10b的原始执行数据300a以及关联于程序10d的原始执行数据300b传送至该储存装置,以储存原始执行数据300a以及原始执行数据300b。
[0063]综上所述,在本发明的实施例中,多核心处理器里的第一核心经配置而运行操作系统,多核心处理器里的第二核心经配置而运行应用程序或驱动程序,且第一核心还经配置而用来追踪与记录第二核心在运行程序期间所提取的指令、执行上述指令所产生的参数以及寄存器的存取状态等原始执行数据。如此,程序设计人员可依据完整的原始执行数据而得知程序的详细执行历程,甚至可从完整的原始执行数据发现程序编译器无法发现的错误,从而提升软件程序开发上的便利性。
[0064]虽然本发明已以实施例公开如上,然而其并非用以限定本发明,任何所属技术领域中的普通技术人员,在不脱离本发明的精神和范围的情况下,应当可作些许的更动与润饰,故本发明的保护范围应当视所附的权利要求书的范围所界定者为准。
【主权项】
1.一种用于追踪程序执行状态的方法,该用于追踪程序执行状态的方法包括: 提供一处理器,其中该处理器包括第一核心与第二核心; 藉由该第一核心运行一操作系统,并藉由该第二核心运行一程序; 在该第二核心运行该程序的期间,藉由该第一核心利用一追踪模块来追踪该第二核心的执行状态,以获取该第二核心运行该程序而产生的原始执行数据;以及 储存关联于该程序的该原始执行数据。2.如权利要求1所述的用于追踪程序执行状态的方法,其中在藉由该第一核心运行该操作系统,并藉由该第二核心运行该程序的步骤之前,所述方法还包括: 初始化该第一核心以及该第二核心,致使该第一核心处于执行状态且该第二核心处于准备状态;以及 当该第一核心处于执行状态时,藉由该第一核心对该操作系统执行一初始化程序并向该操作系统注册该追踪模块。3.如权利要求2所述的用于追踪程序执行状态的方法,其中在当该第一核心处于执行状态时,藉由该第一核心对该操作系统执行该初始化程序并向该操作系统注册该追踪模块的步骤之后,所述方法还包括: 将该第二核心从该准备状态转换为该执行状态。4.如权利要求1所述的用于追踪程序执行状态的方法,其中储存该原始执行数据的步骤包括: 将属于机械语言格式的该原始执行数据转换为属于低级语言格式的该原始执行数据;以及 储存属于该低级语言格式的该原始执行数据于一储存装置中。5.如权利要求1所述的用于追踪程序执行状态的方法,其中在该第二核心运行该程序的期间,藉由该第一核心利用该追踪模块来追踪该第二核心的执行状态,以获取该第二核心运行该程序而产生的原始执行数据的步骤包括: 在该第二核心运行该程序的期间,藉由该第二核心的一寄存器依序记录关联于该程序的至少一指令:以及 藉由该第一核心通过该追踪模块将该至少一指令记录至该原始数据中。6.如权利要求1所述的用于追踪程序执行状态的方法,所述方法还包括: 提供一程序语言转换模块;以及 利用该程序语言转换模块将该原始执行数据转换为属于高级语言格式的被追踪程序代码。7.如权利要求1所述的用于追踪程序执行状态的方法,其中该处理器还包括一第三核心,所述方法还包括: 藉由该第三核心运行另一程序; 在该第三核心运行该另一程序的期间,藉由该第一核心利用该追踪模块来追踪该第三核心,以获取该第三核心运行该另一程序而产生的另一原始执行数据;以及 储存关联于该另一程序的该另一原始执行数据。8.一种用于追踪程序执行状态的多核心处理系统,该用于追踪程序执行状态的多核心处理系统包括: 一存储器,该存储器储存一操作系统与一追踪模块; 一第一核心,该第一核心耦接该存储器并运行该操作系统;以及 一第二核心,该第二核心耦接该存储器并运行一程序, 其中,在该第二核心运行该程序的期间,该第一核心利用该追踪模块来追踪该第二核心的执行状态,以获取该第二核心运行该程序而产生的原始执行数据, 其中该第一核心将关联于该程序的该原始执行数据传送至一储存装置,以储存该原始执行数据。9.如权利要求8所述的用于追踪程序执行状态的多核心处理系统,其中该第二核心包括寄存器,在该第二核心运行该程序的期间,该寄存器依序记录关联于该程序的至少一指令,而该第一核心通过该追踪模块将该至少一指令记录至该原始数据中。10.如权利要求8所述的用于追踪程序执行状态的多核心处理系统,其中在该第一核心执行该操作系统以及该第二核心执行该程序之前,该第一核心执行硬件初始化并且处于执行状态且该第二核心执行硬件初始化并且处于准备状态, 其中当该第一核心处于该执行状态,该第一核心对该操作系统执行一初始化程序并向该操作系统注册该追踪模块。11.如权利要求9所述的用于追踪程序执行状态的多核心处理系统,其中在该第一核心对该操作系统执行该初始化程序并向该操作系统注册该追踪模块之后,该第二核心从该准备状态转换为该执行状态。12.如权利要求8所述的用于追踪程序执行状态的多核心处理系统,其中该第一核心将属于机械语言格式的该原始执行数据转换为属于低级语言格式的该原始执行数据。13.如权利要求10所述的用于追踪程序执行状态的多核心处理系统,其中该储存装置为一外部储存装置或一内部储存装置。14.如权利要求8所述的用于追踪程序执行状态的多核心处理系统,还包括: 一程序语言转换模块,该程序语言转换模块耦接该储存装置,将该原始执行数据转换为属于高级语言格式的被追踪程序代码。15.如权利要求8所述的用于追踪程序执行状态的多核心处理系统,还包括: 一第三核心,该第三核心运行另一程序, 其中,在该第三核心运行该另一程序的期间,该第一核心利用该追踪模块来追踪该第三核心,以获取该第三核心运行该另一程序而产生的另一原始执行数据, 其中,该第一核心将关联于该另一程序的该另一原始执行数据传送至该储存装置,以储存该另一原始执行数据。
【文档编号】G06F11/34GK106033385SQ201510120996
【公开日】2016年10月19日
【申请日】2015年3月19日
【发明人】陈敬融
【申请人】启碁科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1