CN106649074A - 一种智能卡的程序调试方法及装置 - Google Patents
一种智能卡的程序调试方法及装置 Download PDFInfo
- Publication number
- CN106649074A CN106649074A CN201510727664.2A CN201510727664A CN106649074A CN 106649074 A CN106649074 A CN 106649074A CN 201510727664 A CN201510727664 A CN 201510727664A CN 106649074 A CN106649074 A CN 106649074A
- Authority
- CN
- China
- Prior art keywords
- debugging
- node
- program
- executed
- state data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000002159 abnormal effect Effects 0.000 claims description 29
- 238000004088 simulation Methods 0.000 abstract description 5
- 230000002950 deficient Effects 0.000 abstract 3
- 230000008569 process Effects 0.000 description 18
- 230000007547 defect Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种智能卡的程序调试方法及装置,本发明包括:接收调试指令,调试指令用于调试加载在智能卡中的主程序;执行主程序,并在主程序执行至调试节点时,执行调试指令;调试指令用于指示执行以下步骤:记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域。本发明无需仿真器参与,即可在智能卡内实现程序调试功能,使得程序调试人员能够快速的获得主程序缺陷位置的系统的运行状态数据,基于缺陷位置的系统的运行状态数据,对缺陷位置的准确的定位和分析。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种智能卡的程序调试方法及装置。
背景技术
近几年来,伴随着智能卡技术的不断发展与进步,智能卡产品在日常生活中的使用也日趋广泛,智能卡产品的开发过程也逐渐受到人们的关注与重视。
目前,智能卡产品的主要功能由卡片操作系统(COS,card operating system)实现。智能卡操作系统是下载到智能卡并在其上运行的一组程序代码,由于智能卡片上资源有限,操作系统代码通常是基于卡外模拟环境(卡片模拟器、智能卡仿真器等)进行开发和调试,开发完成后生成可执行文件,再将可执行文件加载到智能卡上运行。
当加载到智能卡上的可执行文件出现异常时,需要通过一些调试方法来发现缺陷并解决问题,目前主要的技术方法是基于卡外模拟环境进行调试,即向卡外模拟环境加载相同的可执行文件进行问题的复现和调试。这种卡外调试的特点是针对复现场景,在卡外仿真器中进行代码跟踪,借助调试环境查看寄存器、内存、调用堆栈等信息。卡外调试虽然可以很方便的获取问题复现场景时的上下文信息及变量,适用于开发阶段,但其过于依赖卡外仿真器,针对仿真环境不友好的芯片开发时,降低开发效率。
在某些场景下,基于卡外模拟环境进行调试的方法失效,此时,需要在卡内针对智能卡实卡环境进行调试。但是大多智能卡不支持在卡内进行实卡环境的调试。为了解决这个问题,现有解决办法为:将目标可执行文件的执行代码中插入新的调试代码,更新目标可执行文件的执行代码,并根据更新后的执行代码,在卡外环境中重新生成目标可执行文件,然后从卡外下载重新生成的目标可执行文件,在卡内加载所下载的目标可执行文件进行问题的复现和调试。这种方法存在的缺点是:每次更改调试代码时都需要重新生成目标可执行文件并重新下载,消耗时间较长,调试效率极低,并且在构造调试代码时会侵入原始的可执行文件,可能造成复现环境与原始环境不一致的情况,增加调试误差,降低了精确度。
综上,因智能卡不支持卡内进行程序调试,现有智能卡存在着需要借助卡外模拟环境进行程序调试的问题。
发明内容
本发明实施例提供一种智能卡的程序调试方法及装置,用以实现智能卡支持在卡内进行程序调试。
本发明实施例提供一种智能卡的程序调试方法,包括:
接收调试指令,所述调试指令用于调试加载在所述智能卡中的主程序;
执行所述主程序,并在所述主程序执行至调试节点时,执行所述调试指令;所述调试指令用于指示执行以下步骤:
记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
进一步地,所述调试指令中包括所述调试节点的位置信息和所述调试节点对应的调试程序信息;
所述在所述主程序执行至调试节点时,执行所述调试指令,包括:
根据所述调试节点的位置信息,确定所述主程序是否执行至所述调试节点;
若所述主程序执行至所述调试节点,则
根据所述调试节点对应的调试程序信息,获取所述调试节点对应的调试程序,并执行获取的所述调试程序,所述调试程序用于记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
进一步地,根据所述调试节点对应的调试程序信息,获取所述调试节点对应的调试程序,包括:
根据所述调试节点对应的调试程序信息,通过卡外实体存储的预先设置的调试程序中获取所述调试节点对应的调试程序;或者,
根据所述调试节点对应的调试程序信息,从所述智能卡存储的预先设置的调试程序中获取所述调试节点对应的调试程序。
进一步地,所述调试节点为N个,N为大于或等于2的正整数;
所述在所述主程序执行至调试节点时,执行所述调试指令,包括:
在所述主程序执行至第i个调试节点时,执行所述第i个调试节点对应的调试程序;
在所述主程序执行至第i+1个调试节点时,执行所述第i+1个调试节点对应的调试程序,其中,1<i<N。
进一步地,若设定的所述调试节点位于所述主程序中相邻两个节点之间的位置,若所述两个节点中先执行的为第一节点,后执行的为第二节点,则所述调试节点处系统的运行状态数据为执行所述第一节点后系统的运行状态数据,所述调试节点处系统的运行状态数据,具体包括以下的部分或组合:
执行所述第一节点后系统的工作状态、第一节点所属应用的上下文环境、第一节点处引用的关键变量的值。
进一步地,还包括:
读取存储的所述调试节点处系统的运行状态数据,并输出到卡外环境,以便对所述调试节点处系统的运行状态数据进行分析,得到所述主程序的异常数据。
基于相同的发明构思,本发明实施例提供一种智能卡的程序调试装置,包括:
接收单元,接收调试指令,所述调试指令用于调试加载在所述智能卡中的主程序;
执行单元,用于执行所述主程序;
调试单元,用于在所述执行单元执行的所述主程序执行至调试节点时,执行所述调试指令;所述调试指令用于指示执行以下步骤:记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
进一步地,所述调试指令中包括所述调试节点的位置信息和所述调试节点对应的调试程序信息;
所述调试单元具体用于:
根据所述调试节点的位置信息,确定所述主程序是否执行至所述调试节点;
若所述主程序执行至所述调试节点,则
根据所述调试节点对应的调试程序信息,获取所述调试节点对应的调试程序,并执行获取的所述调试程序,所述调试程序用于记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
进一步地,所述调试单元具体用于:
根据所述调试节点对应的调试程序信息,通过卡外实体存储的预先设置的调试程序中获取所述调试节点对应的调试程序;或者,
根据所述调试节点对应的调试程序信息,从所述智能卡存储的预先设置的调试程序中获取所述调试节点对应的调试程序。
进一步地,所述调试节点为N个,N为大于或等于2的正整数;
所述调试单元具体用于:
在所述主程序执行至第i个调试节点时,执行所述第i个调试节点对应的调试程序;
在所述主程序执行至第i+1个调试节点时,执行所述第i+1个调试节点对应的调试程序,其中,1<i<N。
进一步地,若设定的所述调试节点位于所述主程序中相邻两个节点之间的位置,若所述两个节点中先执行的为第一节点,后执行的为第二节点;则所述调试节点处系统的运行状态数据为执行所述第一节点后系统的运行状态数据,所述调试节点处系统的运行状态数据,具体包括以下的部分或组合:
执行所述第一节点后系统的工作状态、第一节点所属应用的上下文环境、第一节点处引用的关键变量的值。
进一步地,还包括读取单元和输出单元;
所述读取单元,用于读取存储的所述调试节点处系统的运行状态数据;
所述输出单元,用于将读取的所述调试节点处系统的运行状态数据输出到卡外环境,以便对所述调试节点处系统的运行状态数据进行分析,得到所述主程序的异常数据。
上述实施例中,当主程序存在异常时,通过设置调试节点和调试指令再次执行存在异常的主程序时,根据调试指令,在主程序执行至设置的调试节点时,记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,实现了不需要卡外仿真器的参与,也不需更新智能卡中的主程序,只需根据调试指令即可实现在智能卡内进行程序调试,使得程序调试人员能够快速的获得主程序缺陷位置的系统的运行状态数据,基于缺陷位置的系统的运行状态数据,对缺陷位置的准确的定位和分析。执行调试指令的时候将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,未占用执行主程序的运行空间,实现了在不影响智能卡原有主程序运行的基础上执行调试指令,获取智能卡运行主程序过程中系统的各种运行状态数据。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为发明实施例提供的一种智能卡的程序调试方法的方法流程图;
图2为本发明实施例提供的一种基于观察模式的智能卡程序调试的方法流程图;
图3为本发明实施例提供的一种基于调试模式的智能卡程序调试的方法流程图;
图4为本发明实施例提供的一种智能卡的程序调试装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为了能够实现智能卡支持在卡内进行程序调试,本发明实施例提供如图1所示的一种智能卡的程序调试方法,包括:
步骤101,接收调试指令,调试指令用于调试加载在智能卡中的主程序;
步骤102,执行主程序,并在主程序执行至调试节点时,执行调试指令;调试指令用于指示执行以下步骤:
记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域。
对于上述方法流程,作以下说明:
上述调试指令执行完成后,回归主程序执行。
调试指令用于调试加载在智能卡中的主程序,该主程序是指发生异常或存在缺陷的执行程序。接收到的调试指令可以指示记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,还可以指示读取调试节点处系统的运行状态数据。
优选的,接收到的调试指令用于加载存储在智能卡中的调试程序,该调试程序用于记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,还用于读取调试节点处系统的运行状态数据。
例如,上述步骤101至102的一种优选的实施方式为:接收调试指令,调试指令中包括调试节点的位置信息和调试节点对应的调试程序信息;执行主程序,并在主程序执行至调试节点时,执行调试指令;其中,执行调试指令,包括:根据调试节点的位置信息,确定主程序是否执行至调试节点;若主程序执行至调试节点,则根据调试节点对应的调试程序信息,获取调试节点对应的调试程序,并执行获取的调试程序。
因调试程序并不是一个完整的可执行文件,需要嵌入主程序的指定位置中才能运行,因此,本发明主程序执行至调试节点时,串行执行调试程序。一种可选的实现方式是调试指令或调试程序中包括跳转指令,根据跳转指令,实现调试程序被嵌入到主程序的调试节点处执行。因此,在主程序执行至调试节点时,执行获取的调试程序,是指:在主程序执行至调试节点时,跳转执行获取的调试程序,执行调试程序结束之后,跳转执行主程序调试节点之后的程序。例如,执行至主程序的第一个调试节点时,跳转执行第一个调试节点对应的调试程序,相当于将第一个调试节点对应的调试程序嵌入至主程序的调试节点处,使得该调试程序得以运行。执行该调试程序使用的空间都是编译时单独分配的,不会占用主程序执行时占用的数据空间,因此执行调试程序不会影响主程序的运行时所需的数据。
上述举例中,根据调试节点对应的调试程序信息,获取调试节点对应的调试程序,包括:根据调试节点对应的调试程序信息,通过卡外实体存储的预先设置的调试程序中获取调试节点对应的调试程序;或者,根据调试节点对应的调试程序信息,从智能卡存储的预先设置的调试程序中获取调试节点对应的调试程序。
上述举例中,执行获取的调试程序,包括:记录调试节点处系统的运行状态数据,将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,并读取调试节点处系统的运行状态数据。
上述步骤中,智能卡的预留存储区域,是智能卡上预留的调试日志空间,用于存储调试过程中记录的系统运行状态数据。
上述步骤中的调试节点是预先配置的,具体是根据执行主程序的过程中出现异常的位置预先确定的。
本发明实施例中的调试节点是根据智能卡主程序的异常情况预先设置的可疑程序节点。一般设置过程包括:将主程序加载在智能卡中进行执行时,发现主程序的运行结果异常,根据经验或准则确定主程序发生异常的可疑位置,在主程序发生异常的可疑位置设定调试节点,本发明支持在主程序中设定多个调试节点。
若调试节点为N个,N为大于或等于2的正整数;
则上述步骤102中,在主程序执行至调试节点时,执行调试指令,包括:
在主程序执行至第i个调试节点时,执行第i个调试节点对应的调试程序;在主程序执行至第i+1个调试节点时,执行第i+1个调试节点对应的调试程序,第i+1个调试节点在主程序中的位置设置在第i个调试节点在主程序中的位置之后,其中,1<i<N。
若设定的调试节点位于主程序中相邻两个节点之间的位置,若两个节点中先执行的为第一节点,后执行的为第二节点,则调试节点处系统的运行状态数据为执行主程序的第一节点后系统的运行状态数据,该调试节点处系统的运行状态数据,包括以下的部分或组合:系统工作状态,第一节点所属应用的工作环境,第一节点处引用的关键变量。
其中,系统工作状态,如寄存器组、累加器、程序计数器、栈数据、栈指针等。第一节点所属应用的工作环境,如虚拟机的栈数据、虚拟机栈指针、应用的对象数据和注册表数据等。第一节点处引用的关键变量是指该节点处引用到的变量,比如事务空间指针,目标地址,数据长度等。
上述方法流程还包括:根据调试指令,读取存储的调试节点处系统的运行状态数据,并输出到卡外环境,以便对调试节点处系统的运行状态数据进行分析,得到主程序的异常数据。因调试节点处系统的运行状态数据表征了系统在缺陷场景下的运行状态信息,通过分析系统在缺陷场景下的运行状态信息,可以获得缺陷的相应数据。
现有技术中,每次调试都需要更改主程序中添加的调试代码,都需要把主程序重新生成并下载,而所添加的调试代码对主程序代码执行的结果会有影响。
而本发明上述方法流程中,并不在主程序中添加调试代码生成新的主程序,而是当主程序存在异常时,通过设置调试节点和调试指令再次执行存在异常的主程序时,根据调试指令,在主程序执行至设置的调试节点时,记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,实现了不需要卡外仿真器的参与,也不需更新智能卡中的主程序,只需根据调试指令即可实现在智能卡内进行程序调试,使得程序调试人员能够快速的获得主程序缺陷位置的系统的运行状态数据,基于缺陷位置的系统的运行状态数据,对缺陷位置的准确的定位和分析。执行调试指令的时候将调试节点处系统的运行状态数据存储至智能卡的预留存储区域,未占用执行主程序的运行空间,实现了在不影响智能卡原有主程序运行的基础上执行调试指令,获取智能卡运行主程序过程中系统的各种运行状态数据。
相对于现有技术,上述方法流程因为不需要从卡外环境下载用于进行调试的包含调试代码在内的主程序,该主程序较大而且下载耗时较长,本发明只需下载编译好的调试程序或者根据具体的调试指令,就可实现在智能卡内边运行主程序边获取调试节点的调试数据。相对于现有技术,只下载调试程序,不需要频繁的在卡外生成新的主程序,能够缩短程序缺陷调试的时间,而且调试程序的调试代码小,下载耗时较短,进而提高了程序开发的效率。
相对于现有技术,上述方法流程介意缩短程序缺陷调试的时间使得调试时间成本降低;无需使用仿真器,减少了搭建仿真器仿真平台环境的时间;直接在卡内的异常场景下调试,无需在模拟环境中复制异常场景,减少了复制场景的时间。因此,上述方法流程可降低智能卡程序调试的成本。
基于上述方法流程,根据使用场景的不同,本发明实施例设计了2种基本的调试模式,观察模式和调试模式,使用者可以根据需要单独或者组合使用两种模式。
为了缩小问题发生的范围,减少可疑程序节点的数量,减少了加载调试代码的次数,可以通过观察模式获取程序可疑位置的通用系统数据,在大部分的调试环境下都会用到通用系统数据,根据通用系统数据,对发生异常的位置进行定位分析。然后在发生异常的位置设置调试节点。
观察模式通常用于问题的定位分析,在具体实现上无需加载调试代码,只需通过指令设置,观察指定条件下的通用系统数据,并将观测数据存储,留待后续读取和分析。通过指令设置,观察指定条件下的通用系统数据,是指程序调试人员可以向智能卡发送“开启记录程序计数器”调试指令,然后智能卡接收该调试指令,再次执行异常过程,此时异常过程中运行的程序计数器的值会被依次记录到指定文件中,调试人员再发送“获取程序计数器记录”指令,即可将记录的数据导出用于分析。
本发明实施例提供了如图2所示的观察模式的程序调试方法的流程,其中,调试节点包括位于第一节点与第二节点之间的第一调试节点,位于第二节点与第三节点之间的第二调试节点,则调试方法流程具体包括:
步骤201,接收调试指令,调试指令包括调试节点的位置信息;
可根据调试指令中包括的调试节点的位置信息,判断主程序是否执行至设定的调试节点。
步骤202,开始执行加载在智能卡中的主程序;
步骤203,根据调试指令中第一调试节点的位置信息,在执行至主程序的第一调试节点时,记录第一调试节点处系统的运行状态数据,并将第一调试节点处系统的运行状态数据存储至智能卡的预留存储区域;
其中,第一调试节点处系统的运行状态数据为执行主程序的第一节点后执行第二节点前系统的通用运行状态数据,包括:系统工作状态,如寄存器组、累加器、程序计数器、栈数据、栈指针等,第一节点所属应用的工作环境,如虚拟机的栈数据、虚拟机栈指针、应用的对象数据和注册表数据等。
步骤204A,读取存储的第一调试节点处系统的运行状态数据;
步骤204B,将第一调试节点处系统的运行状态数据输出到卡外环境,以便对第一调试节点处系统的运行状态数据进行分析,得到主程序的异常数据;
步骤205,根据调试指令中第二调试节点的位置信息,在执行至主程序的第二调试节点时,记录第二调试节点处系统的运行状态数据,并将第二调试节点处系统的运行状态数据存储至智能卡的预留存储区域;
其中,第二调试节点处系统的运行状态数据为执行主程序的第二节点后、执行第三节点前系统的通用运行状态数据,包括:系统工作状态,如寄存器组、累加器、程序计数器、栈数据、栈指针等,第二节点所属应用的工作环境,如虚拟机的栈数据、虚拟机栈指针、应用的对象数据和注册表数据等;
步骤206A,读取存储的第二调试节点处系统的运行状态数据;
步骤206B,将第二调试节点处系统的运行状态数据输出到卡外环境,以便对第二调试节点处系统的运行状态数据进行分析,得到主程序的异常数据。
上述步骤中,步骤204A和步骤204B,以及步骤206A和步骤206B不存在严格的时序,步骤204A、步骤204B与步骤205,不存在严格的时序问题。
通过上述方法流程,可以获取程序可疑位置的通用系统数据,因为在大部分的调试环境下都会用到通用系统数据,根据通用系统数据,可以对发生异常的位置进行定位分析,从很多可疑程序节点中筛选出出现异常概率较高的程序节点,基于这些出现异常概率较高的程序节点再设定调试节点进行程序调试,就能减少可疑程序节点的数量,提高程序调试的效率。
在较佳的实施例中,可以先进行观察模式,获取出现异常概率较高的程序节点,根据出现异常概率较高的程序节点设置调试节点进行调试模式。
调试模式通常用于问题的分析和调试,调试模式的实现流程为:根据选取的适当的程序位置的参数信息,按需要编制调试代码,通过设定调试指令,控制加载并驱动调试程序记录必要的系统运行状态信息(包括与程序节点相关的系统运行状态信息),并将调试程序的执行结果进行存储,留待后续异常问题的分析和调试。
本发明实施例提供了如图3所示的调试模式的程序调试方法流程,其中,调试节点包括位于第一节点与第二节点之间的第一调试节点,位于第二节点与第三节点之间的第二调试节点,则调试方法流程具体包括:
步骤301,根据下载指令,从智能卡的卡外环境导入预先配置的调试程序,并存储在智能卡中;
其中,预先配置调试程序包括:根据智能卡主程序的异常情况,确定主程序中的调试节点,根据各调试节点的不同需求,编制相应的调试代码,将调试代码编译成可执行文件片段,即调试程序。调试程序是调试源码经过编译连接后生成的机器码,加载到卡内的调试程序存放在智能卡的数据区,执行调试程序,不会对被调试的主程序的运行造成任何影响。
步骤302,接收调试指令;
其中,调试指令中包括调试节点的位置信息和调试节点对应的调试程序信息;
步骤303,开始执行加载在智能卡中的主程序;
步骤304,根据调试指令,在主程序执行至第一调试节点时,跳转执行第一调试节点对应的调试程序,执行第一调试节点对应的调试程序结束之后,跳转执行主程序第一调试节点之后的程序;
具体的,根据第一调试节点的位置信息,确定主程序是否执行至第一调试节点;若主程序执行至第一调试节点,则根据第一调试节点对应的调试程序信息,从智能卡中存储的调试程序中获取第一调试节点对应的调试程序,并执行第一调试节点对应的调试程序。
执行第一调试节点对应的调试程序,包括:记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域。
因调试程序并不是一个完整的可执行文件,需要嵌入指定的主程序中才能运行,此步骤中,执行至主程序的第一调试节点时,将第一调试节点对应的调试程序嵌入至主程序的调试节点处,使得调试程序记录执行第一节点后系统的运行状态数据。执行调试程序使用的空间都是编译时单独分配的,不会占用主程序执行时占用的数据空间,因此执行调试程序不会影响主程序的运行时所需的数据。
其中,第一调试节点处系统的运行状态数据除了包括执行主程序的第一节点后执行第二节点前系统的通用运行状态数据之外,还包括:第一节点处引用的关键变量的值。第一节点处引用的关键变量是指该节点处引用到的变量,比如事务空间指针,目标地址,数据长度等。
系统的通用运行状态数据,包括:系统工作状态,如寄存器组、累加器、程序计数器、栈数据、栈指针等,第二节点所属应用的工作环境,如虚拟机的栈数据、虚拟机栈指针、应用的对象数据和注册表数据等;
步骤305A,根据调试指令,读取存储的第一调试节点处系统的运行状态数据;
步骤305B,根据调试指令,将第一调试节点处系统的运行状态数据输出到卡外环境,以便对第一调试节点处系统的运行状态数据进行分析,得到主程序的异常数据;
步骤306,根据调试指令,在主程序执行至第二调试节点时,跳转执行第二调试节点对应的调试程序,执行第二调试节点对应的调试程序结束之后,跳转执行主程序第二调试节点之后的程序,直至主程序执行结束;
具体的,根据第二调试节点的位置信息,确定主程序是否执行至第二调试节点;若主程序执行至第二调试节点,则根据第二调试节点对应的调试程序信息,从智能卡中存储的调试程序中获取第二调试节点对应的调试程序,并执行第二调试节点对应的调试程序。
执行第二调试节点对应的调试程序,包括:记录第二调试节点处系统的运行状态数据,并将第二调试节点处系统的运行状态数据存储至智能卡的预留存储区域;
其中,第二调试节点处系统的运行状态数据除了包括执行主程序的第二节点后、且执行第三节点前系统的通用运行状态数据之外,还包括:第二节点处引用的关键变量的值。第二节点处引用的关键变量是指该节点处引用到的变量,比如事务空间指针,目标地址,数据长度等。步骤307A,读取存储的第二调试节点处系统的运行状态数据;
步骤307B,将第二调试节点处系统的运行状态数据输出到卡外环境,以便对第二调试节点处系统的运行状态数据进行分析,得到主程序的异常数据。
上述步骤中,步骤305A和步骤305B,以及步骤307A和步骤307B不存在严格的时序,步骤305A、步骤305B与步骤306,不存在严格的时序。具体时序可由调试指令决定。
可选的,上述步骤305A和步骤305B也可以由第一调试节点对应的调试程序执行,在编译第一调试节点对应的调试程序时,将执行读取和执行输出的相关指令代码添加在调试代码中即可。同样的,上述步骤307A和步骤307B也可以由第二调试节点对应的调试程序执行,在编译第二调试节点对应的调试程序时,将执行读取和执行输出的相关指令代码添加在调试代码中即可。
上述方法流程优化了智能卡程序的调试过程,使得智能卡支持卡内进行程序调试。当需要对存在缺陷的主程序进行程序调试时,不需要卡外仿真器的参与,也不需更新智能卡中的主程序,只需更新调试程序,即直接将编译好的调试程序下载到智能卡中,在不影响智能卡原有主程序运行的基础上执行调试节点对应的调试程序,记录智能卡运行过程中的各种系统运行状态数据。相对于现有技术,上述方法流程因为不需要从卡外环境下载用于进行调试的包含调试代码在内的主程序,该主程序较大而且下载耗时较长,本发明只需下载编译好的调试程序或者根据具体的调试指令,就可实现在智能卡内边运行主程序边获取调试节点的调试数据。相对于现有技术,只下载调试程序,不需要频繁的在卡外生成新的主程序,能够缩短程序缺陷调试的时间,而且调试程序的调试代码小,下载耗时较短,进而提高了程序开发的效率。
针对上述方法流程,本发明实施例还提供一种智能卡的程序调试装置,这些装置的具体内容可以参照上述方法实施,在此不再赘述。
基于相同的发明构思,本发明实施例提供如图4所示的一种智能卡的程序调试装置,包括:
接收单元401,接收调试指令,调试指令用于调试加载在智能卡中的主程序;
执行单元402,用于执行主程序;
调试单元403,用于在执行单元402执行的主程序执行至调试节点时,执行调试指令;调试指令用于指示执行以下步骤:记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域。
进一步地,调试指令中包括调试节点的位置信息和调试节点对应的调试程序信息;
调试单元403具体用于:
根据调试节点的位置信息,确定主程序是否执行至调试节点;
若主程序执行至调试节点,则
根据调试节点对应的调试程序信息,获取调试节点对应的调试程序,并执行获取的调试程序,调试程序用于记录调试节点处系统的运行状态数据,并将调试节点处系统的运行状态数据存储至智能卡的预留存储区域。
进一步地,调试单元403具体用于:
根据调试节点对应的调试程序信息,通过卡外实体存储的预先设置的调试程序中获取调试节点对应的调试程序;或者,
根据调试节点对应的调试程序信息,从智能卡存储的预先设置的调试程序中获取调试节点对应的调试程序。
进一步地,调试节点为N个,N为大于或等于2的正整数;
调试单元403具体用于:
在主程序执行至第i个调试节点时,执行第i个调试节点对应的调试程序;
在主程序执行至第i+1个调试节点时,执行第i+1个调试节点对应的调试程序,其中,1<i<N。
进一步地,若设定的调试节点位于主程序中相邻两个节点之间的位置,若两个节点中先执行的为第一节点,后执行的为第二节点;则调试节点处系统的运行状态数据为执行第一节点后系统的运行状态数据,调试节点处系统的运行状态数据,具体包括以下的部分或组合:
执行第一节点后系统的工作状态、第一节点所属应用的上下文环境、第一节点处引用的关键变量的值。
进一步地,还包括读取单元和输出单元;
读取单元,用于读取存储的调试节点处系统的运行状态数据;
输出单元,用于将读取的调试节点处系统的运行状态数据输出到卡外环境,以便对调试节点处系统的运行状态数据进行分析,得到主程序的异常数据。
上述实施例优化了智能卡程序的调试过程,使得智能卡支持卡内进行程序调试。当需要对存在缺陷的主程序进行程序调试时,不需要卡外仿真器的参与,也不需更新智能卡中的主程序,只需更新调试程序,即直接将编译好的调试程序下载到智能卡中,在不影响智能卡原有主程序运行的基础上执行调试节点对应的调试程序,记录智能卡运行过程中的各种系统运行状态数据。相对于现有技术,因为不需要从卡外环境下载用于进行调试的包含调试代码在内的主程序,该主程序较大而且下载耗时较长,本发明只需下载编译好的调试程序或者根据具体的调试指令,就可实现在智能卡内边运行主程序边获取调试节点的调试数据。相对于现有技术,只下载调试程序,不需要频繁的在卡外生成新的主程序,能够缩短程序缺陷调试的时间,而且调试程序的调试代码小,下载耗时较短,进而提高了程序开发的效率。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种智能卡的程序调试方法,其特征在于,包括:
接收调试指令,所述调试指令用于调试加载在所述智能卡中的主程序;
执行所述主程序,并在所述主程序执行至调试节点时,执行所述调试指令;所述调试指令用于指示执行以下步骤:
记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
2.如权利要求1所述的方法,其特征在于,所述调试指令中包括所述调试节点的位置信息和所述调试节点对应的调试程序信息;
所述在所述主程序执行至调试节点时,执行所述调试指令,包括:
根据所述调试节点的位置信息,确定所述主程序是否执行至所述调试节点;
若所述主程序执行至所述调试节点,则
根据所述调试节点对应的调试程序信息,获取所述调试节点对应的调试程序,并执行获取的所述调试程序,所述调试程序用于记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
3.如权利要求2所述的方法,其特征在于,根据所述调试节点对应的调试程序信息,获取所述调试节点对应的调试程序,包括:
根据所述调试节点对应的调试程序信息,通过卡外实体存储的预先设置的调试程序中获取所述调试节点对应的调试程序;或者,
根据所述调试节点对应的调试程序信息,从所述智能卡存储的预先设置的调试程序中获取所述调试节点对应的调试程序。
4.如权利要求2所述的方法,其特征在于,所述调试节点为N个,N为大于或等于2的正整数;
所述在所述主程序执行至调试节点时,执行所述调试指令,包括:
在所述主程序执行至第i个调试节点时,执行所述第i个调试节点对应的调试程序;
在所述主程序执行至第i+1个调试节点时,执行所述第i+1个调试节点对应的调试程序,其中,1<i<N。
5.如权利要求1至4中任一项所述的方法,其特征在于,
若设定的所述调试节点位于所述主程序中相邻两个节点之间的位置,若所述两个节点中先执行的为第一节点,后执行的为第二节点,则所述调试节点处系统的运行状态数据为执行所述第一节点后系统的运行状态数据,所述调试节点处系统的运行状态数据,具体包括以下的部分或组合:
执行所述第一节点后系统的工作状态、第一节点所属应用的上下文环境、第一节点处引用的关键变量的值。
6.如权利要求1至4中任一项所述的方法,其特征在于,还包括:
读取存储的所述调试节点处系统的运行状态数据,并输出到卡外环境,以便对所述调试节点处系统的运行状态数据进行分析,得到所述主程序的异常数据。
7.一种智能卡的程序调试装置,其特征在于,包括:
接收单元,接收调试指令,所述调试指令用于调试加载在所述智能卡中的主程序;
执行单元,用于执行所述主程序;
调试单元,用于在所述执行单元执行的所述主程序执行至调试节点时,执行所述调试指令;所述调试指令用于指示执行以下步骤:记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
8.如权利要求7所述的程序调试装置,其特征在于,所述调试指令中包括所述调试节点的位置信息和所述调试节点对应的调试程序信息;
所述调试单元具体用于:
根据所述调试节点的位置信息,确定所述主程序是否执行至所述调试节点;
若所述主程序执行至所述调试节点,则
根据所述调试节点对应的调试程序信息,获取所述调试节点对应的调试程序,并执行获取的所述调试程序,所述调试程序用于记录所述调试节点处系统的运行状态数据,并将所述调试节点处系统的运行状态数据存储至所述智能卡的预留存储区域。
9.如权利要求8所述的程序调试装置,其特征在于,所述调试单元具体用于:
根据所述调试节点对应的调试程序信息,通过卡外实体存储的预先设置的调试程序中获取所述调试节点对应的调试程序;或者,
根据所述调试节点对应的调试程序信息,从所述智能卡存储的预先设置的调试程序中获取所述调试节点对应的调试程序。
10.如权利要求8所述的程序调试装置,其特征在于,
所述调试节点为N个,N为大于或等于2的正整数;
所述调试单元具体用于:
在所述主程序执行至第i个调试节点时,执行所述第i个调试节点对应的调试程序;
在所述主程序执行至第i+1个调试节点时,执行所述第i+1个调试节点对应的调试程序,其中,1<i<N。
11.如权利要求8至10中任一项所述的程序调试装置,其特征在于,
若设定的所述调试节点位于所述主程序中相邻两个节点之间的位置,若所述两个节点中先执行的为第一节点,后执行的为第二节点;则所述调试节点处系统的运行状态数据为执行所述第一节点后系统的运行状态数据,所述调试节点处系统的运行状态数据,具体包括以下的部分或组合:
执行所述第一节点后系统的工作状态、第一节点所属应用的上下文环境、第一节点处引用的关键变量的值。
12.如权利要求8至10中任一项所述的程序调试装置,其特征在于,还包括读取单元和输出单元;
所述读取单元,用于读取存储的所述调试节点处系统的运行状态数据;
所述输出单元,用于将读取的所述调试节点处系统的运行状态数据输出到卡外环境,以便对所述调试节点处系统的运行状态数据进行分析,得到所述主程序的异常数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727664.2A CN106649074A (zh) | 2015-10-30 | 2015-10-30 | 一种智能卡的程序调试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510727664.2A CN106649074A (zh) | 2015-10-30 | 2015-10-30 | 一种智能卡的程序调试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106649074A true CN106649074A (zh) | 2017-05-10 |
Family
ID=58809313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510727664.2A Pending CN106649074A (zh) | 2015-10-30 | 2015-10-30 | 一种智能卡的程序调试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649074A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342702A (zh) * | 2021-08-04 | 2021-09-03 | 武汉天喻信息产业股份有限公司 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1339128A (zh) * | 1999-01-22 | 2002-03-06 | 因芬尼昂技术北美公司 | 芯片内调试系统 |
CN1752946A (zh) * | 2005-10-31 | 2006-03-29 | 大唐微电子技术有限公司 | 一种嵌入式系统的调试方法及其系统 |
CN1841338A (zh) * | 2005-04-01 | 2006-10-04 | 北京清华同方微电子有限公司 | 一种用于智能卡仿真调试系统的硬件断点电路 |
CN1936861A (zh) * | 2005-09-23 | 2007-03-28 | 明基电通股份有限公司 | 程序执行追踪方法及系统以及计算机可读取储存介质 |
CN101183330A (zh) * | 2007-12-13 | 2008-05-21 | 东信和平智能卡股份有限公司 | 嵌入式系统的在线调试系统及其调试方法 |
CN103440175A (zh) * | 2013-08-06 | 2013-12-11 | 北京数码视讯科技股份有限公司 | 智能卡的异常处理方法及装置 |
CN104360950A (zh) * | 2014-12-03 | 2015-02-18 | 东信和平科技股份有限公司 | 智能卡调试方法、系统及装置 |
CN104461905A (zh) * | 2014-12-30 | 2015-03-25 | 东信和平科技股份有限公司 | 一种智能卡虚拟机、api库与上层应用同时调试的方法及系统 |
-
2015
- 2015-10-30 CN CN201510727664.2A patent/CN106649074A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1339128A (zh) * | 1999-01-22 | 2002-03-06 | 因芬尼昂技术北美公司 | 芯片内调试系统 |
CN1841338A (zh) * | 2005-04-01 | 2006-10-04 | 北京清华同方微电子有限公司 | 一种用于智能卡仿真调试系统的硬件断点电路 |
CN1936861A (zh) * | 2005-09-23 | 2007-03-28 | 明基电通股份有限公司 | 程序执行追踪方法及系统以及计算机可读取储存介质 |
CN1752946A (zh) * | 2005-10-31 | 2006-03-29 | 大唐微电子技术有限公司 | 一种嵌入式系统的调试方法及其系统 |
CN101183330A (zh) * | 2007-12-13 | 2008-05-21 | 东信和平智能卡股份有限公司 | 嵌入式系统的在线调试系统及其调试方法 |
CN103440175A (zh) * | 2013-08-06 | 2013-12-11 | 北京数码视讯科技股份有限公司 | 智能卡的异常处理方法及装置 |
CN104360950A (zh) * | 2014-12-03 | 2015-02-18 | 东信和平科技股份有限公司 | 智能卡调试方法、系统及装置 |
CN104461905A (zh) * | 2014-12-30 | 2015-03-25 | 东信和平科技股份有限公司 | 一种智能卡虚拟机、api库与上层应用同时调试的方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342702A (zh) * | 2021-08-04 | 2021-09-03 | 武汉天喻信息产业股份有限公司 | 一种应用程序测试方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11036507B2 (en) | Processor testing using pairs of counter incrementing and branch instructions | |
CN105468529B (zh) | 一种安卓应用ui控件精准遍历方法和装置 | |
US9946628B2 (en) | Embedding and executing trace functions in code to gather trace data | |
CN107943707B (zh) | 行为树的测试方法、装置和存储介质以及终端 | |
CN110580226B (zh) | 操作系统级程序的目标码覆盖率测试方法、系统及介质 | |
CN110347085B (zh) | 自动化测试系统、方法、车辆以及计算机可读介质 | |
JP2017084082A (ja) | シミュレーション装置、試験シナリオファイル作成方法、及び試験シナリオファイルを用いた試験方法 | |
CN104156311B (zh) | 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法 | |
CN104021072A (zh) | 用于评估失效的软件程序的机器和方法 | |
CN106776334A (zh) | 基于注释生成测试用例方法及装置 | |
CN108572892B (zh) | 一种基于PowerPC多核处理器的离线测试方法和装置 | |
CN112148614A (zh) | 回归测试方法及装置 | |
CN109783837A (zh) | 仿真设备、仿真系统、仿真方法和仿真程序 | |
CN106909434B (zh) | 可执行程序中未定义函数的检测方法及装置 | |
CN102520984A (zh) | 目标软件在指定硬件环境中最差时间的计算方法 | |
CN112905451A (zh) | 应用程序的自动化测试方法及装置 | |
CN110471828B (zh) | 一种操作系统测试方法、装置及其设备 | |
CN106649074A (zh) | 一种智能卡的程序调试方法及装置 | |
CN108763039B (zh) | 一种业务故障模拟方法、装置及设备 | |
CN115563008A (zh) | 代码覆盖率检测系统、方法、装置和存储介质 | |
CN115964045A (zh) | 一种跨架构的操作系统快速自动化构建的方法、装置及介质 | |
CN115470141A (zh) | 一种故障模拟方法、装置及相关设备 | |
CN112527571B (zh) | 一种cpu指令集覆盖率计算方法及装置 | |
CN113806231A (zh) | 一种代码覆盖率分析方法、装置、设备和介质 | |
CN109446091B (zh) | 业务实体对象测试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170510 |