CN105955886A - 一种基于解释型语言的异常断点调试方法 - Google Patents
一种基于解释型语言的异常断点调试方法 Download PDFInfo
- Publication number
- CN105955886A CN105955886A CN201610277648.2A CN201610277648A CN105955886A CN 105955886 A CN105955886 A CN 105955886A CN 201610277648 A CN201610277648 A CN 201610277648A CN 105955886 A CN105955886 A CN 105955886A
- Authority
- CN
- China
- Prior art keywords
- abnormal
- exception
- debugging
- debugging method
- breakpoint
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于解释型语言的异常断点调试方法,包括在一解释型语言的操作系统平台,虚拟机内部集成的调试服务模块处理异常断点,程序在发生异常位置自动停止执行。当调试服务模块停止指令解析时,服务器端的调试器将当前执行环境的上下文信息发送给客户端,实现异常的快速定位。与现有技术相比,本发明的调试方法通过使能异常断点,启动异常断点调试功能,开发人员可以快速高效地定位应用程序中出现的异常,方便开发人员对应用程序的调试,极大地提高了调试效率。
Description
技术领域
本发明涉及一种基于解释型语言的调试方法,尤其是涉及一种基于Java卡的解释型编程语言的异常断点调试方法。
背景技术
集成各种App应用的智能卡给人们的生活带来很大便利,Java卡是在智能卡技术的基础上发展起来的,是Java技术和智能卡技术的有机结合体。在国外,Java智能卡已广泛用于用户身份识别、交通、通信及金融等领域;在国内,Java智能卡的应用正呈现急剧增长的势头。Java智能卡充分利用了Java的平台无关性,使得Java技术“一次编写,随处运行”的思想在智能卡上得以实现。Java卡支持一卡多用和重用。其中,支持一卡多用是指Java卡上可以同时存在多个不同的应用,满足一张Java卡拥有不同功能的需求。例如,它可以同时兼有电子钱包和身份鉴别功能;重用是指Java卡上的应用可以根据需求删除或重新添加新的应用,无需更换新的智能卡,这样极大地增强智能卡应用的灵活性。Java卡集成的解释型语言的安全特性,使得开发出来的应用程序具有很高的安全性,在同类型产品里面具有更大的竞争力。
在现有技术中,高安全性的Java卡应用程序需要开发人员根据指令及返回的错误信息,分析可能在源代码哪些位置发生异常,在所有可能的位置附近下断点。然后重发指令,当在某一断点停止后,再一步步跟踪,确定发生异常的准确的位置。因此,亟待开发一种高效地基于解释型语言的异常断点调试方法。
发明内容
针对上述问题,本发明主要目的是提供一种有效提高调试效率的基于解释型语言程序的异常断点调试方法;
本发明的另一个目的是提供一种便于开发人员对Java卡的异常断点进行快速调试的方法。
为了实现上述的主要目的,本发明提供的基于Java卡的异常断点调试方法包括在一解释型语言的操作系统平台上,虚拟机内部集成的调试服务模块处理异常断点,程序在发生异常位置自动停止执行。当调试服务模块停止指令解析时,服务器端的调试器将当前执行环境的上下文信息发送给客户端,实现异常的快速定位。在应用程序单元中,客户端通过按键或其他方式使能/禁止异常断点。当服务器端接收到客户端发出的数据时,在使能异常断点的情况下:
(1)取当前指令操作码;
(2)解析指令,将指令寄存器中的指令操作码取出后进行译码,分析其指令的类型和操作数长度,PC指针指向下一条操作码的指令地址;
(3)执行指令;
(4)若异常抛出,返回当前执行Java卡程序的上下文信息给客户端,包括当前指令地址、调用栈等信息。否则,继续执行指令;
(5)调试器客户端根据当前的上下文信息,结合调试组件信息进行解析;
(6)定位触发异常的源代码所在的位置,并且显示发生异常时当前指令地址、调用栈的源代码及变量等信息。
相对于现有技术,本发明的有益效果在于:
本发明中基于解释型语言的异常断点调试方法,无需在应用程序中逐步追踪断点的异常情况,而是直接通过按键或者其他方式使能异常断点功能,实现快速定位触发异常的代码位置,极大地提高了调试效率。
附图说明
图1是本发明中异常断点调试流程图;
图2是本发明实施例中服务器端与客户端的通信框图;
图3是本发明实施例中服务器端与客户端的调试流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步说明。
本发明的调试方法是在Debugtool调试工具中,对Java卡的解释型语言进行异常断点调试。当IDE开发环境开始执行时,客户端立即向服务器端发送虚拟机可以识别的编程语言指令,后台启动虚拟机,虚拟机的调试服务模块加载Java卡应用程序至Java卡虚拟机内存中。应用程序调用install指令创建一个应用实例,给虚拟机发送select指令,来调用Java卡应用对象的接口。当应用程序传入APDU时,对command接口的不同的process指令进行处理。调试异常中断时,应用程序可以调用任意接口的指令信息。虚拟机将获得的异常中断的指令信息发送给客户端的指令模块,在IDE开发环境下指令模块对异常断点信息进行处理,即可定位开发人员编写的应用程序中触发异常的源代码所在的位置,完成程序的调试。如图2和图3所示。
在安全可靠的运行环境JCRE下,Java虚拟机通过对main函数进行初始化,接收指令信息,来判断是否调用应用程序中的install、select、process等接口。服务器端根据需要调用虚拟机中每帧的包(package)ID和方法组件的偏移量,查找方法组件地址,发送返回地址给客户端。收到信息后,结合调试组件和调试信息,根据每帧的校验位置,解析出代码文件的中断位置,在客户端Java卡调试组件定位出所在包的位置。如此依次获得每一帧的包中方法组件的偏移量,定位出当前所在的方法即为程序触发异常的位置。
当服务器端中的调试服务模块停止指令解析时,使能异常中断,在准备抛出异常的时刻,调试器开启工作模式。服务器端的Debugtool调试器发送当前执行Java卡程序的上下文信息给客户端,客户端通过查看变量和表达式的值,执行单步、下断点。同时,通过go、goto、trace into、trace over、trace out等程序控制指令启动程序,控制程序的执行。如果程序运行中发生异常,启动Break on exception按键设置异常断点功能,实现快速定位异常断点;否则禁止异常中断,调试器关闭。
当然,上述实施例仅是本发明的优选的实施方式。本发明的调试方法不仅仅限于智能卡行业Java卡的基于解释型语言程序的调试,还可以广泛应用于其他领域中的解释型语言的调试场合中。
最后,需要强调的是,本发明不限于上述实施方式,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明内。本发明要求保护范围有所附的权利要求书及其等效物界定。
Claims (5)
1.一种基于解释型语言的异常断点调试方法,其特征在于:服务器端与调试器客户端建立通信,在一操作系统平台的解释型语言调试集成模块中使能异常断点功能,程序在发生异常位置自动停止执行,实现异常的快速定位。
2.根据权利要求1所述的异常断点调试方法,其特征在于:所述调试器使能异常中断发送上下文信息给客户端。
3.根据权利要求1所述的异常断点调试方法,其特征在于:所述调试器在使能异常断点的情况抛出异常。
4.根据权利要求1所述的异常断点调试方法,其特征在于:所述调试器抛出异常的方式为直接抛出异常或间接抛出异常。
5.根据权利要求1所述的异常断点调试方法,其特征在于:所述调试器执行过程中可以通过解析每一帧上下文信息的方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610277648.2A CN105955886A (zh) | 2016-04-23 | 2016-04-23 | 一种基于解释型语言的异常断点调试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610277648.2A CN105955886A (zh) | 2016-04-23 | 2016-04-23 | 一种基于解释型语言的异常断点调试方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105955886A true CN105955886A (zh) | 2016-09-21 |
Family
ID=56916432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610277648.2A Pending CN105955886A (zh) | 2016-04-23 | 2016-04-23 | 一种基于解释型语言的异常断点调试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105955886A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020134634A1 (zh) * | 2018-12-27 | 2020-07-02 | 百富计算机技术(深圳)有限公司 | 程序调试方法、程序调试装置、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430662A (zh) * | 2008-12-09 | 2009-05-13 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
CN102855186A (zh) * | 2012-07-24 | 2013-01-02 | 飞天诚信科技股份有限公司 | 一种Java卡调试信息的处理方法 |
CN103019941A (zh) * | 2012-12-28 | 2013-04-03 | 大唐微电子技术有限公司 | 程序调试方法和装置 |
US20150199260A1 (en) * | 2014-01-10 | 2015-07-16 | International Business Machines Corporation | Conditional component breakpoint setting system and method |
-
2016
- 2016-04-23 CN CN201610277648.2A patent/CN105955886A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430662A (zh) * | 2008-12-09 | 2009-05-13 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
CN102855186A (zh) * | 2012-07-24 | 2013-01-02 | 飞天诚信科技股份有限公司 | 一种Java卡调试信息的处理方法 |
CN103019941A (zh) * | 2012-12-28 | 2013-04-03 | 大唐微电子技术有限公司 | 程序调试方法和装置 |
US20150199260A1 (en) * | 2014-01-10 | 2015-07-16 | International Business Machines Corporation | Conditional component breakpoint setting system and method |
Non-Patent Citations (1)
Title |
---|
JIM D’ ANJOU 等: "《Eclipse权威开发指南(第2版)》", 31 December 2006, 清华大学出版社 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020134634A1 (zh) * | 2018-12-27 | 2020-07-02 | 百富计算机技术(深圳)有限公司 | 程序调试方法、程序调试装置、终端设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109783342B (zh) | 脚本调试方法、设备及计算机存储介质 | |
CN101183330B (zh) | 嵌入式系统的在线调试系统及其调试方法 | |
CN106776308B (zh) | 一种基于Uboot的电子产品故障调试方法及系统 | |
US20040143814A1 (en) | Run-time verification of annotated software code | |
CN104516732A (zh) | 一种应用程序崩溃报告方法和系统 | |
US8423970B2 (en) | Method, computer program product, and hardware product for handling breakpoints in an asynchronous debug model | |
CN109710320B (zh) | 一种两级驱动的启动引导BootLoader方法 | |
CN102346235A (zh) | 一种面向硬件设备功能的自动测试系统及方法 | |
CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN108319555A (zh) | 一种基于嵌入式实时系统的实时调试方法 | |
CN108021791B (zh) | 数据保护方法及装置 | |
CN107168773A (zh) | 一种jvm崩溃后问题定位及应用恢复的处理方法及装置 | |
CN104881283A (zh) | 一种获取基于安卓的终端设备的root权限的方法及系统 | |
CN109684795B (zh) | 应用程序反调试的方法、装置及电子设备 | |
CN112256570A (zh) | 远程调试方法、装置、设备及存储介质 | |
CN105094910A (zh) | 一种驱动函数用户态调试系统和方法 | |
CN115757183A (zh) | 天熠嵌入式操作系统下一种基于代理的任务级调试方法 | |
US20120110383A1 (en) | Method and apparatus for off-line analyzing crashed programs | |
CN114356779A (zh) | 编程语言调试方法、装置及终端设备 | |
CN105446886A (zh) | 一种计算机程序调试方法和装置 | |
CN105955886A (zh) | 一种基于解释型语言的异常断点调试方法 | |
CN113127329B (zh) | 脚本调试方法、装置及计算机存储介质 | |
CN114510429B (zh) | 一种基于动态符号执行的调试方法、系统和介质 | |
US8843908B2 (en) | Compiler validation via program verification | |
CN112199642A (zh) | 一种安卓系统反调试的检测方法、移动终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160921 |