CN104298602A - 一种调试应用程序的方法及装置 - Google Patents
一种调试应用程序的方法及装置 Download PDFInfo
- Publication number
- CN104298602A CN104298602A CN201410584443.XA CN201410584443A CN104298602A CN 104298602 A CN104298602 A CN 104298602A CN 201410584443 A CN201410584443 A CN 201410584443A CN 104298602 A CN104298602 A CN 104298602A
- Authority
- CN
- China
- Prior art keywords
- debugged
- application program
- debug
- function
- variable
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种调试应用程序的方法及装置。在被调试系统中添加监控组件,通过监控组件使被调试应用程序反向attach到调试系统中,无须调试系统attach到被调试应用程序中,从而在应用程序调试过程中无须终止被调试应用程序即可对被调试应用程序进行动态调试,提高了系统性能以及系统可用性;并且,通过监控组件将被调试变量的相关信息和被调试函数的相关信息发送至调试系统,由调试系统根据被调试变量的相关信息和被调试函数的相关信息直接输出调试结果,在被调试应用程序不导出调试符号表的基础上,无须采用反汇编方式对被调试应用程序进行调试,有效降低了调试系统进行应用程序调试的复杂度。
Description
技术领域
本发明涉及计算机应用领域,尤其涉及一种调试应用程序的方法及装置。
背景技术
目前,在对计算机中的应用程序进行调试时,通常采用将调试器加载(attach)到被调试应用程序的进程空间中的方式。
采用上述方式对被调试应用程序进行调试时,中心处理单元(CentralProcessing Unit,CPU)执行调试器发送的调试指令,使调试器进入被调试应用程序的进程空间中,此时,CPU将根据该调试指令停止被调试应用程序的运算操作,即使被调试应用程序终止,并使调试器获取被调试参量。但是,在网络应用场景中,上述被调用应用程序的终止将造成网络中断,从而影响在线调试过程。
此外,上述被调试应用程序中包含大量符号链接,该符号链接中包含被调试应用程序中任意一变量或者函数的相关信息,调试器通过该符号链接对被调试应用程序进行调试,增加了被调试应用程序所占用存储空间的大小,使被调试应用程序运行效率大大降低。而在调试器对被调试应用程序进行调试的过程中,若被调试应用程序没有根据符号链接导出调试符号表,即调试器无法获取数据类型作用域、内存地址等相关信息时,调试器仅能采用反汇编的方式对被调试应用程序进行调试,提高了调试复杂度。
综上所述,目前调试器在对被调试应用程序进行调试的过程中,存在造成被调试应用程序终止以及调试复杂度高的问题。
发明内容
本发明实施例提供一种调试应用程序的方法及装置,用以解决目前调试器在对被调试应用程序进行调试的过程中,存在造成被调试应用程序终止以及调试复杂度高的问题。
本发明实施例提供的具体技术方案如下:
一种调试应用程序的方法,包括:
当调试系统启动完毕时,所述调试系统基于被调试应用程序中的监控组件发送的建立连接请求,建立与所述被调试应用程序之间的连接;
当所述连接建立之后,所述调试系统接收被调试应用程序中的监控组件发送的被调试参量;其中,所述被调试参量为所述监控组件监控到所述被调试应用程序中预先配置的被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的参量;
所述调试系统根据所述被调试参量,输出调试结果。
可选的,当所述调试系统接收到用户输入的暂停指令时,所述调试系统根据所述被调试参量中包含的地址,跳转至所述地址对应的位置;所述调试系统根据用户输入的汇编指令,自跳转的位置起对所述被调试应用程序进行单步调试。
采用上述技术方案,通过监控组件使被调试应用程序反向attach到调试系统中,从而避免了在应用程序调试过程中终止被调试应用程序,实现了不影响被调试应用程序运行的情况下对调试过程的暂停,提高了对调试过程控制的灵活性,且更加适合线上调试环境。
一种调试应用程序的方法,包括:
当调试系统启动完毕时,被调试应用程序中的监控组件建立所述被调试应用程序与所述调试系统之间的连接;
当所述连接建立之后,所述被调试应用程序中的监控组件根据预先配置的被调试项目标识,实时监控所述被调试应用程序;
当所述被调试应用程序中的监控组件监控到所述被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的被调试参量,并将所述被调试参量发送至所述调试系统,由所述调试系统输出调试结果。
可选的,当所述被调试项目为变量时,所述被调试应用程序中的监控组件根据所述变量标识对应的指针,获取所述变量对应的变量地址;当所述被调试项目为函数时,所述被调试应用程序中的监控组件根据所述函数中包含的变量标识对应的指针,获取所述变量对应的变量地址;根据所述被调试应用程序在运行过程中对应的文件中保存的符号表,获取所述函数标识对应的地址范围,并根据所述函数标识对应的地址范围以及所述变量地址,确定所述变量在所述函数中的位置信息;从所述函数中获取所述位置信息对应的程序内容,并对所述程序内容执行哈希操作,生成所述程序内容对应的标识;获取本地保存的编译前生成的所述程序内容对应的标识;当所述生成的程序内容对应的标识与所述本地保存的所述程序内容对应的标识相同时,将所述程序内容对应的标识作为所述函数标识对应的函数地址。
进一步的,在获取所述被调试参量之后,在内存中申请存储空间,并在所述存储空间中加入具有逻辑功能的补丁程序;在所述函数中的指定位置加入特定指针,所述特定指针指向所述存储空间;当补丁程序运行到所述函数的指定位置时,根据所述特定指针,将CPU运行逻辑指向所述存储空间;当所述存储空间中的程序执行完毕后,将所述CPU运行逻辑指向所述函数。
采用上述技术方案,能够实现在程序运行过程中动态添加热补丁的过程,避免了现有技术中需要中止正在运行的程序后才能添加补丁,有效提高了程序运行效率。
进一步的,当所述被调试应用程序检测到位于远端的多个调制系统发送的调试请求时,所述被调试应用程序根据所述被调试应用程序的连接配置参数,确定与所述被调试应用程序建立连接的至少一个调试系统标识;并根据确定的所述至少一个调试系统标识,与所述至少一个调试系统标识对应的调试系统建立连接,由所述至少一个调试系统通过进程间通信IPC将调试指令发送至所述被调试应用程序的进程空间中;所述被调试应用程序执行所述调试指令。
可选的,当所述被调试应用程序与至少两个调试系统分别建立连接时,若所述至少两个调试系统针对同一个被调试参量进行调试,则被调试应用程序在被调试应用程序的进程空间中建立指令队列,并根据预设规则将所述至少两个调试系统对应的调试指令进行排序后加入所述指令队列,按照排序顺序依次执行所述指令队列中的调试指令;若所述至少两个调试系统针对不同的被调试参量进行调试,则被调试应用程序同时执行所述至少两个调试系统发送的调试指令。
采用上述技术方案,多用户分别对应的调试系统能够对同一个被调试应用程序的调试过程,从而实现了分布式调试过程,使得调试过程不受地理位置的限制,提高了调试效率,有效降低了调试成本。
一种调试应用程序的装置,包括:
连接建立单元,用于当本地启动完毕时,基于被调试应用程序中的监控组件发送的建立连接请求,建立与所述被调试应用程序之间的连接;
接收单元,用于当所述连接建立之后,接收被调试应用程序中的监控组件发送的被调试参量;其中,所述被调试参量为所述监控组件监控到所述被调试应用程序中预先配置的被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的参量;
输出单元,用于根据所述被调试参量,输出调试结果。
进一步的,上述装置还包括调试单元,用于:当接收到用户输入的暂停指令时,根据所述被调试参量中包含的地址,跳转至所述地址对应的位置;根据用户输入的汇编指令,自跳转的位置起对所述被调试应用程序进行单步调试。
采用上述技术方案,通过监控组件使被调试应用程序反向attach到调试系统中,从而避免了在应用程序调试过程中终止被调试应用程序,实现了不影响被调试应用程序运行的情况下对调试过程的暂停,提高了对调试过程控制的灵活性,且更加适合线上调试环境。
一种调试应用程序的装置,包括:
连接建立单元,用于当调试系统启动完毕时,本地的监控组件建立所述被调试应用程序与所述调试系统之间的连接;
监控单元,用于当所述连接建立之后,所述监控组件根据预先配置的被调试项目标识,实时监控所述被调试应用程序;
获取单元,用于当所述监控组件监控到所述被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的被调试参量;
发送单元,用于将所述被调试参量发送至所述调试系统,由所述调试系统输出调试结果。
可选的,上述获取单元,具体用于:当所述被调试项目为变量时,由所述被调试应用程序中的监控组件根据所述变量标识对应的指针,获取所述变量对应的变量地址;当所述被调试项目为函数时,由所述被调试应用程序中的监控组件根据所述函数中包含的变量标识对应的指针,获取所述变量对应的变量地址;根据所述被调试应用程序在运行过程中对应的文件中保存的符号表,获取所述函数标识对应的地址范围,并根据所述函数标识对应的地址范围以及所述变量地址,确定所述变量在所述函数中的位置信息;从所述函数中获取所述位置信息对应的程序内容,并对所述程序内容执行哈希操作,生成所述程序内容对应的标识;获取本地保存的编译前生成的所述程序内容对应的标识;当所述生成的程序内容对应的标识与所述本地保存的所述程序内容对应的标识相同时,将所述程序内容对应的标识作为所述函数标识对应的函数地址。
进一步的,上述装置还包括动态补丁单元,用于:在获取所述被调试参量之后,在内存中申请存储空间,并在所述存储空间中加入具有逻辑功能的补丁程序;在所述函数中的指定位置加入特定指针,所述特定指针指向所述存储空间;当程序运行到所述函数的指定位置时,根据所述特定指针,将CPU运行逻辑指向所述存储空间;当所述存储空间中的补丁程序执行完毕后,将所述CPU运行逻辑指向所述函数。
采用上述技术方案,能够实现在程序运行过程中动态添加热补丁的过程,避免了现有技术中需要中止正在运行的程序后才能添加补丁,有效提高了程序运行效率。
进一步的,上述装置还包括处理单元,用于:当检测到位于远端的多个调制系统发送的调试请求时,根据所述被调试应用程序的连接配置参数,确定与所述被调试应用程序建立连接的至少一个调试系统标识;并根据确定的所述至少一个调试系统标识,与所述至少一个调试系统标识对应的调试系统建立连接,由所述至少一个调试系统通过进程间通信IPC将调试指令发送至所述被调试应用程序的进程空间中;执行所述调试指令。
可选的,所述处理单元,具体用于:当本地与至少两个调试系统分别建立连接时,若所述至少两个调试系统针对同一个被调试参量进行调试,则在本地的进程空间中建立指令队列,并根据预设规则将所述至少两个调试系统对应的调试指令进行排序后加入所述指令队列,按照排序顺序依次执行所述指令队列中的调试指令;若所述至少两个调试系统针对不同的被调试参量进行调试,则同时执行所述至少两个调试系统发送的调试指令。
采用上述技术方案,多用户分别对应的调试系统能够对同一个被调试应用程序的调试过程,从而实现了分布式调试过程,使得调试过程不受地理位置的限制,提高了调试效率,有效降低了调试成本。
本发明实施例中,在被调试系统中添加监控组件,通过监控组件使被调试应用程序反向attach到调试系统中,调试系统无须向CPU发送特定调试指令,从而在应用程序调试过程中无须终止被调试应用程序即可对被调试应用程序进行动态调试,提高了系统性能以及系统可用性;并且,通过监控组件将被调试变量的相关信息和被调试函数的相关信息发送至调试系统,由调试系统根据被调试变量的相关信息和被调试函数的相关信息直接输出调试结果,无须在被调试应用程序中写入符号链接,被调试应用程序也无须包含符号表,减小了被调试应用程序占用存储空间的大小;此外,在被调试应用程序不导出符号表的基础上,无须采用反汇编方式对被调试应用程序进行调试,有效降低了调试系统进行应用程序调试的复杂度。
附图说明
图1为本发明实施例中调试系统调试被调试应用程序的流程图一;
图2为本发明实施例中调试系统调试被调试应用程序的流程图二;
图3为本发明实施例中调试指令队列示意图;
图4为本发明实施例中调试系统结构示意图;
图5为本发明实施例中调试应用程序装置结构示意图一;
图6为本发明实施例中调试应用程序装置结构示意图二。
具体实施方式
为了解决目前调试器在对被调试应用程序进行调试的过程中,存在造成被调试应用程序终止以及调试复杂度高的问题。本发明实施例中,在被调试应用程序中添加监控组件,当调试系统启动完毕时,监控组件进入调试系统的进程中;并由该监控组件对被调试应用程序中的被调试变量的相关信息以及被调试函数的相关信息进行监控,并将监控的被调试变量的相关信息以及被调试函数的相关信息发送至调试系统;调试系统根据该被调试变量的相关信息以及被调试函数的相关信息,输出调试结果。采用上述技术方案,在被调试系统中添加监控组件,通过监控组件使被调试应用程序反向attach到调试系统中,调试系统无须向CPU发送特定调试指令,从而在应用程序调试过程中无须终止被调试应用程序即可对被调试应用程序进行动态调试,提高了系统性能及可用性;并且,通过监控组件将被调试变量的相关信息和被调试函数的相关信息发送至调试系统,由调试系统根据被调试变量的相关信息和被调试函数的相关信息直接输出调试结果,无须在被调试应用程序中写入符号链接,被调试应用程序也无须包含调试符号表,减小了被调试应用程序占用存储空间的大小;此外,在被调试应用程序不导出调试符号表的基础上,无须采用反汇编方式对被调试应用程序进行调试,有效降低了调试系统进行应用程序调试的复杂度。
下面结合说明书附图,对本发明实施例作进一步详细描述。
参阅图1所示,本发明实施例中,调试系统对被调试应用程序进行调试的过程包括:
步骤100:当调试系统启动完毕时,调试系统基于被调试应用程序中的监控组件发送的建立连接请求,建立与被调试应用程序之间的连接。
本发明实施例中,在对被调试应用程序进行编译之前,加入监控组件,该监控组件中包含预先配置的被调试项目标识;其中,被调试项目标识包含被调试变量标识以及被调试函数标识。
可选的,在被调试应用程序运行过程中,监控组件处于阻塞状态,并且该监控组件按照预设周期查询调试系统是否启动完毕,当监控组件确认调试系统启动完毕时,向调试系统发送建立连接请求,通过进程间通信(IPC)主动建立被调试应用程序与调试系统之间的连接,即监控组件进入调试系统的进程空间中,并且该监控组件还拥有访问被调试应用程序的进程空间的权限。上述预设周期可以根据具体应用场景预先设置。
相较于现有技术中通过被调试应用程序中包含的大量符号链接对被调试应用程序进行调试时,所有的符号链接对应于被调试应用程序中所有变量以及所有函数,采用上述技术方案,在被调试应用程序中加入监控组件,通过监控组件仅针对需要监控的变量及函数进行监控,无须对不需要监控的变量或者函数进行监控,也无须在被调试应用程序中加入符号链接即可对被调试应用程序进行调试,从而降低了被调试应用程序占用的存储空间,有效提高了被调试应用程序的运行效率,缩短了调试被调试应用程序的时间;并且,通过监控代码使被调试应用程序反向attach到调试系统的进程空间中,实现对被调试变量以及被调试函数进行监控,无须生成调试符号表,从而降低了调试被调试应用程序所占用存储空间的大小。
可选的,上述调试系统和被调试应用程序可以位于同一个设备当中,也可以位于不同的设备当中。
步骤110:当调试系统与被调试应用程序之间的连接建立之后,调试系统接收被调试应用程序中的监控组件发送的被调试参量。
本发明实施例中,当监控组件建立被调试应用程序与调试系统之间的连接时,监控组件根据预先配置的被调试项目标识,监控被调试应用程序,当确定被调试项目标识对应的被调试项目运行时,获取被调试项目运行过程中对应的被调试参量。其中,由于被调试项目标识包含被调试变量标识和被调试函数标识,因此,相应的,被调试参量包括内存地址,内存地址可以在调试系统中动态获取,且该内存地址包括被调试函数名称及地址、被调试变量名称及地址、被调试函数堆栈和被调试函数调用栈等。
可选的,对生成的监控组件进行编译处理,自动生成监控组件对应的暗庄。在由调试系统对被调试应用程序进行调试的过程中,上述生成的各个暗庄分析内存地址,并将被调试项目标识对应的被调试参量进行记录。此外,在由调试系统对被调试应用程序进行调试的过程中,各个暗庄主动或被动接收调试系统发送的调试指令,对自身监控的变量地址,函数地址等被调试参量进行调试或监控。
步骤120:调试系统根据上述接收到的被调试参量,输出调试结果。
本发明实施例中,调试系统根据上述监控组件获取的被调试参量,输出调试结果,该调试结果包括变量名称、变量地址、变量所处位置信息是栈空间还是堆空间、函数名称、函数起始地址、函数结束地址、函数使用CPU时间片、函数调用次数等。
相较于现有技术中当被调试应用程序不导出调试符号表时,需要调试系统反汇编实现对被调试应用程序的情况,采用上述技术方案,在被调试应用程序没有导出调试符号表时,通过监控组件反向attach到调试系统的进程空间中,将被调试变量的相关信息和被调试函数的相关信息发送至调试系统,由调试系统根据被调试变量的相关信息和被调试函数的相关信息直接输出调试结果,有效降低了调试系统进行应用程序调试的复杂度。
可选的,当调试系统接收到用户输入的暂停指令时,调试系统根据被调试参量中包含的地址,跳转至该地址对应的位置;调试系统根据用户输入的汇编指令,自跳转的位置起对被调试应用程序进行单步调试。
采用上述技术方案,通过监控组件使被调试应用程序反向attach到调试系统中,从而避免了在应用程序调试过程中终止被调试应用程序,实现了不影响被调试应用程序运行的情况下对调试过程的暂停,提高了对调试过程控制的灵活性,且更加适合线上调试环境。
为了提高对被调试函数监控的可靠性,可选的,根据监控组件中生成的暗庄,动态对被调试参量进行分析,根据用户输入的调试指令,在被调试函数起始位置加入断点,使调试至该被调试函数时即暂停调试过程,从而提高了调试过程的可靠性。
参阅图2所示,本发明实施例中,被调试应用程序被调试的过程包括:
步骤200:当调试系统启动完毕时,被调试应用程序中的监控组件建立被调试应用程序与调试系统之间的连接。
本发明实施例中,在对被调试应用程序进行编译之前,加入监控组件,该监控组件中包含预先配置的被调试项目标识;其中,被调试项目标识包含被调试变量标识以及被调试函数标识。
可选的,在被调试应用程序运行过程中,监控组件处于阻塞状态,并且该监控组件按照预设周期查询调试系统是否启动完毕,当监控组件确认调试系统启动完毕时,被调试应用程序指示上述监控组件由阻塞状态切换至激活状态;且监控组件通过进程间通信主动建立被调试应用程序与调试系统之间的连接,即监控组件进入调试系统的进程空间中,并且该监控组件还拥有访问被调试应用程序的进程空间的权限。上述预设周期可以根据具体应用场景预先设置。
步骤210:当调试系统与被调试应用程序之间的连接建立之后,被调试应用程序中的监控组件根据预先配置的被调试项目标识,实时监控被调试应用程序。
步骤220:当被调试应用程序中的监控组件监控到上述被调试项目标识对应的被调试项目运行时,获取该被调试项目运行过程中对应的被调试参量,并将被调试参量发送至调试系统,由调试系统输出调试结果。
本发明实施例中,当监控组件建立被调试应用程序与调试系统之间的连接时,监控组件根据预先配置的被调试项目标识,监控被调试应用程序,当确定被调试项目标识对应的被调试项目运行时,获取被调试项目运行过程中对应的被调试参量;其中,由于被调试项目标识包含被调试变量标识和被调试函数标识,因此,相应的,被调试参量包括内存地址,内存地址可以在调试系统中动态获取,且该内存地址包括被调试函数名称及地址、被调试变量名称及地址、被调试函数堆栈和被调试函数调用栈等。调试系统根据上述监控组件获取的被调试参量,输出调试结果,该调试结果包括变量名称、变量地址、变量所处位置信息是栈空间还是堆空间、函数名称、函数起始地址、函数结束地址、函数使用CPU时间片、函数调用次数等。
可选的,当被调试项目为变量时,获取该被调试项目运行过程中对应的被调试参量的过程,包括:被调试应用程序中的监控组件根据变量标识对应的指针,获取上述变量对应的变量地址;
可选的,当所述被调试项目为函数时,获取该被调试项目运行过程中对应的被调试参量的过程,包括:被调试应用程序中的监控组件根据该函数中包含的变量标识对应的指针,获取该变量对应的变量地址;根据上述被调试应用程序在运行过程中对应的文件(如elf文件)中保存的符号表(symtab),获取上述函数标识对应的地址范围,并根据上述函数标识对应的地址范围以及上述变量地址,确定该变量在所述函数中的位置信息;从上述函数中获取上述位置信息对应的程序内容,并对上述程序内容执行哈希操作,生成该程序内容对应的标识;获取本地保存的编译前生成的上述程序内容对应的标识;当生成的程序内容对应的标识与本地保存的程序内容对应的标识相同时,将程序内容对应的标识作为函数标识对应的函数地址。
相较于现有技术中当被调试应用程序不导出调试符号表时,需要调试系统反汇编实现对被调试应用程序的情况,采用上述技术方案,在被调试应用程序没有导出调试符号表时,通过监控组件反向attach到调试系统的进程空间中,将被调试变量的相关信息和被调试函数的相关信息发送至调试系统,由调试系统根据被调试变量的相关信息和被调试函数的相关信息直接输出调试结果,有效降低了调试系统进行应用程序调试的复杂度。
进一步的,在获取所述被调试参量之后,在内存中申请存储空间,并在该存储空间中加入具有逻辑功能的补丁程序;在函数中的指定位置加入特定指针,所述特定指针指向所述存储空间;当补丁程序运行到所述函数的指定位置时,根据所述特定指针,将CPU运行逻辑指向所述存储空间;当所述存储空间中的程序执行完毕后,将所述CPU运行逻辑指向所述函数。其中,上述指定位置为需要加入动态补丁的位置。
采用上述技术方案,能够实现在程序运行过程中动态添加热补丁的过程,避免了现有技术中需要中止正在运行的程序后才能添加补丁,有效提高了程序运行效率。
进一步的,当被调试应用程序检测到位于远端的多个调制系统发送的调试请求时,被调试应用程序根据被调试应用程序的连接配置参数,确定与被调试应用程序建立连接的至少一个调试系统标识;并根据确定的该至少一个调试系统标识,与该至少一个调试系统标识对应的调试系统建立连接,由该至少一个调试系统通过IPC将调试指令发送至被调试应用程序的进程空间中;被调试应用程序执行上述调试指令。例如,被调试应用程序A接收到调试系统B、调试系统C以及调试系统C发送的调试请求,被调试应用程序A根据本地预先设置的连接配置参数,确定与被调试应用程序A建立连接的调试系统为调试系统B和调试系统C;被调试应用程序A接收调试系统B发送的调试指令b以及调试系统C发送的调试指令c,并执行调试指令b和调试指令c。
在上述过程中,连接配置参数可以根据具体应用场景预先设置。例如,被调试应用程序根据被调试应用程序的连接配置参数,确定与被调试应用程序建立连接的至少一个调试系统标识,包括:被调试应用程序所在设备采用广播方式,查询局域网内的指定调试系统是否上线,并将查询到的上线的指定调试系统标识作为确定与被调试应用程序建立连接的至少一个调试系统标识;或者,被调试应用程序所在设备根据配置的调试系统地址,查询调试系统地址对应的调试系统是否上线,并将查询到的上线的指定调试系统标识作为确定与被调试应用程序建立连接的至少一个调试系统标识;或者被调试应用程序所在设备根据默认配置的局域网对应的中转地址,在确保本地与局域网外的网络连接时,将与该中转地址对应的调试系统标识作为确定与被调试应用程序建立连接的至少一个调试系统标识。
可选的,当被调试应用程序与至少两个调试系统分别建立连接时,若至少两个调试系统针对同一个被调试参量进行调试,则被调试应用程序在被调试应用程序的进程空间中建立指令队列,并根据预设规则将该至少两个调试系统对应的调试指令进行排序后加入上述指令队列,按照排序顺序依次执行该指令队列中的调试指令;例如,被调试应用程序A接收调试系统B发送的调试指令b以及调试系统C发送的调试指令c,当调试指令b和调试指令c针对同一个被调试参量进行调试时,根据调制指令的接收顺序对调试指令b和调试指令c进行排序,加入指令队列(如图3所示),被调试应用程序A依次执行调试指令b和调试指令c。若上述至少两个调试系统针对不同的被调试参量进行调试,则被调试应用程序同时执行上述至少两个调试系统发送的调试指令;例如,被调试应用程序A接收调试系统B发送的调试指令b以及调试系统C发送的调试指令c,当调试指令b和调试指令c针对不同的被调试参量进行调试时,被调试应用程序A同时执行调试指令b和调试指令c。
采用上述技术方案,多用户分别对应的调试系统能够对同一个被调试应用程序的调试过程,从而实现了分布式调试过程,使得调试过程不受地理位置的限制,提高了调试效率,有效降低了调试成本。
进一步的,参阅图4所示为本发明实施例中调试系统以及被调试应用程序结构示意图。用户可以通过命令行界面(Command-Line Interface,CLI)向调试系统输入需要获取或者修改的被调试变量或者被调试函数,调试系统将该需要获取或者修改的被调试变量或者被调试函数发送至被调试应用程序;被调试应用程序中的监控组件通过与调试系统子模块/回调函数进行交互,动态获取被调试变量的相关参数或者被调试函数的相关参数,并将该被调试变量的相关参数或者被调试函数的相关参数返回至调试系统。
基于上述技术方案,参阅图5所示,本发明实施例还提供一种调试应用程序的装置,包括连接建立单元50,接收单元51,输出单元52,其中:
连接建立单元50,用于当本地启动完毕时,基于被调试应用程序中的监控组件发送的建立连接请求,建立与所述被调试应用程序之间的连接;
接收单元51,用于当所述连接建立之后,接收被调试应用程序中的监控组件发送的被调试参量;其中,所述被调试参量为所述监控组件监控到所述被调试应用程序中预先配置的被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的参量;
输出单元52,用于根据所述被调试参量,输出调试结果。
进一步的,上述装置还包括调试单元53,用于:当接收到用户输入的暂停指令时,根据所述被调试参量中包含的地址,跳转至所述地址对应的位置;根据用户输入的汇编指令,自跳转的位置起对所述被调试应用程序进行单步调试。
基于上述技术方案,参阅图6所示,本发明实施例还提供一种调试应用程序的装置,包括连接建立单元60,监控单元61,获取单元62,发送单元63,其中:
连接建立单元60,用于当调试系统启动完毕时,本地的监控组件建立所述被调试应用程序与所述调试系统之间的连接;
监控单元61,用于当所述连接建立之后,所述监控组件根据预先配置的被调试项目标识,实时监控所述被调试应用程序;
获取单元62,用于当所述监控组件监控到所述被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的被调试参量;
发送单元63,用于将所述被调试参量发送至所述调试系统,由所述调试系统输出调试结果。
可选的,上述获取单元62,具体用于:当所述被调试项目为变量时,由所述被调试应用程序中的监控组件根据所述变量标识对应的指针,获取所述变量对应的变量地址;当所述被调试项目为函数时,由所述被调试应用程序中的监控组件根据所述函数中包含的变量标识对应的指针,获取所述变量对应的变量地址;根据所述被调试应用程序在运行过程中对应的文件中保存的符号表,获取所述函数标识对应的地址范围,并根据所述函数标识对应的地址范围以及所述变量地址,确定所述变量在所述函数中的位置信息;从所述函数中获取所述位置信息对应的程序内容,并对所述程序内容执行哈希操作,生成所述程序内容对应的标识;获取本地保存的编译前生成的所述程序内容对应的标识;当所述生成的程序内容对应的标识与所述本地保存的所述程序内容对应的标识相同时,将所述程序内容对应的标识作为所述函数标识对应的函数地址。
进一步的,上述装置还包括动态补丁单元64,用于:在获取所述被调试参量之后,在内存中申请存储空间,并在所述存储空间中加入具有逻辑功能的补丁程序;在函数中的指定位置加入特定指针,所述特定指针指向所述存储空间;当程序运行到所述函数的指定位置时,根据所述特定指针,将CPU运行逻辑指向所述存储空间;当所述存储空间中的补丁程序执行完毕后,将所述CPU运行逻辑指向所述函数。
进一步的,上述装置还包括处理单元65,用于:当检测到位于远端的多个调制系统发送的调试请求时,根据所述被调试应用程序的连接配置参数,确定与所述被调试应用程序建立连接的至少一个调试系统标识;并根据确定的所述至少一个调试系统标识,与所述至少一个调试系统标识对应的调试系统建立连接,由所述至少一个调试系统通过进程间通信IPC将调试指令发送至所述被调试应用程序的进程空间中;执行所述调试指令。
可选的,所述处理单元65,具体用于:当本地与至少两个调试系统分别建立连接时,若所述至少两个调试系统针对同一个被调试参量进行调试,则在本地的进程空间中建立指令队列,并根据预设规则将所述至少两个调试系统对应的调试指令进行排序后加入所述指令队列,按照排序顺序依次执行所述指令队列中的调试指令;若所述至少两个调试系统针对不同的被调试参量进行调试,则同时执行所述至少两个调试系统发送的调试指令。
综上所述,当调试系统启动完毕时,调试系统基于被调试应用程序中的监控组件发送的建立连接请求,建立与被调试应用程序之间的连接;调试系统接收被调试应用程序中的监控组件发送的被调试参量;调试系统根据上述接收到的被调试参量,输出调试结果。采用上述技术方案,在被调试系统中添加监控组件,通过监控组件使被调试应用程序反向attach到调试系统中,无须调试系统attach到被调试应用程序中,从而避免了在应用程序调试过程中终止被调试应用程序,提高了系统性能以及系统可用性;并且,通过监控组件将被调试变量的相关信息和被调试函数的相关信息发送至调试系统,由调试系统根据被调试变量的相关信息和被调试函数的相关信息直接输出调试结果,无须在被调试应用程序中写入符号链接,被调试应用程序也无须包含调试符号表,减小了被调试应用程序占用存储空间的大小;此外,在被调试应用程序不导出调试符号表的基础上,无须采用反汇编方式对被调试应用程序进行调试,有效降低了调试系统进行应用程序调试的复杂度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种调试应用程序的方法,其特征在于,包括:
当调试系统启动完毕时,所述调试系统基于被调试应用程序中的监控组件发送的建立连接请求,建立与所述被调试应用程序之间的连接;
当所述连接建立之后,所述调试系统接收被调试应用程序中的监控组件发送的被调试参量;其中,所述被调试参量为所述监控组件监控到所述被调试应用程序中预先配置的被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的参量;
所述调试系统根据所述被调试参量,输出调试结果。
2.如权利要求1所述的方法,其特征在于,当所述调试系统接收到用户输入的暂停指令时,进一步包括:
所述调试系统根据所述被调试参量中包含的地址,跳转至所述地址对应的位置;
所述调试系统根据用户输入的汇编指令,自跳转的位置起对所述被调试应用程序进行单步调试。
3.一种调试应用程序的方法,其特征在于,包括:
当调试系统启动完毕时,被调试应用程序中的监控组件建立所述被调试应用程序与所述调试系统之间的连接;
当所述连接建立之后,所述被调试应用程序中的监控组件根据预先配置的被调试项目标识,实时监控所述被调试应用程序;
当所述被调试应用程序中的监控组件监控到所述被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的被调试参量,并将所述被调试参量发送至所述调试系统,由所述调试系统输出调试结果。
4.如权利要求3所述的方法,其特征在于,当所述被调试应用程序中的监控组件监控到所述被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的被调试参量,具体包括:
当所述被调试项目为变量时,所述被调试应用程序中的监控组件根据所述变量标识对应的指针,获取所述变量对应的变量地址;
当所述被调试项目为函数时,所述被调试应用程序中的监控组件根据所述函数中包含的变量标识对应的指针,获取所述变量对应的变量地址;根据所述被调试应用程序在运行过程中对应的文件中保存的符号表,获取所述函数标识对应的地址范围,并根据所述函数标识对应的地址范围以及所述变量地址,确定所述变量在所述函数中的位置信息;从所述函数中获取所述位置信息对应的程序内容,并对所述程序内容执行哈希操作,生成所述程序内容对应的标识;获取本地保存的编译前生成的所述程序内容对应的标识;当所述生成的程序内容对应的标识与所述本地保存的所述程序内容对应的标识相同时,将所述程序内容对应的标识作为所述函数标识对应的函数地址。
5.如权利要求3所述的方法,其特征在于,在获取所述被调试参量之后,进一步包括:
在内存中申请存储空间,并在所述存储空间中加入具有逻辑功能的补丁程序;
在函数中的指定位置加入特定指针,所述特定指针指向所述存储空间;
当补丁程序运行到所述函数的指定位置时,根据所述特定指针,将中心处理单元CPU运行逻辑指向所述存储空间;
当所述存储空间中的程序执行完毕后,将所述CPU运行逻辑指向所述函数。
6.如权利要求3-5任一项所述的方法,其特征在于,当所述被调试应用程序检测到位于远端的多个调试系统发送的调试请求时,进一步包括:
所述被调试应用程序根据所述被调试应用程序的连接配置参数,确定与所述被调试应用程序建立连接的至少一个调试系统标识;并
根据确定的所述至少一个调试系统标识,与所述至少一个调试系统标识对应的调试系统建立连接,由所述至少一个调试系统通过进程间通信IPC将调试指令发送至所述被调试应用程序的进程空间中;
所述被调试应用程序执行所述调试指令。
7.如权利要求6所述的方法,其特征在于,当所述被调试应用程序与至少两个调试系统分别建立连接时,所述被调试应用程序执行所述调试指令,具体包括:
若所述至少两个调试系统针对同一个被调试参量进行调试,则被调试应用程序在被调试应用程序的进程空间中建立指令队列,并根据预设规则将所述至少两个调试系统对应的调试指令进行排序后加入所述指令队列,按照排序顺序依次执行所述指令队列中的调试指令;
若所述至少两个调试系统针对不同的被调试参量进行调试,则被调试应用程序同时执行所述至少两个调试系统发送的调试指令。
8.一种调试应用程序的装置,其特征在于,包括:
连接建立单元,用于当本地启动完毕时,基于被调试应用程序中的监控组件发送的建立连接请求,建立与所述被调试应用程序之间的连接;
接收单元,用于当所述连接建立之后,接收被调试应用程序中的监控组件发送的被调试参量;其中,所述被调试参量为所述监控组件监控到所述被调试应用程序中预先配置的被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的参量;
输出单元,用于根据所述被调试参量,输出调试结果。
9.如权利要求8所述的装置,其特征在于,还包括调试单元,用于:
当接收到用户输入的暂停指令时,根据所述被调试参量中包含的地址,跳转至所述地址对应的位置;根据用户输入的汇编指令,自跳转的位置起对所述被调试应用程序进行单步调试。
10.一种调试应用程序的装置,其特征在于,包括:
连接建立单元,用于当调试系统启动完毕时,本地的监控组件建立所述被调试应用程序与所述调试系统之间的连接;
监控单元,用于当所述连接建立之后,所述监控组件根据预先配置的被调试项目标识,实时监控所述被调试应用程序;
获取单元,用于当所述监控组件监控到所述被调试项目标识对应的被调试项目运行时,获取所述被调试项目运行过程中对应的被调试参量;
发送单元,用于将所述被调试参量发送至所述调试系统,由所述调试系统输出调试结果。
11.如权利要求10所述的装置,其特征在于,所述获取单元,具体用于:
当所述被调试项目为变量时,由所述被调试应用程序中的监控组件根据所述变量标识对应的指针,获取所述变量对应的变量地址;当所述被调试项目为函数时,由所述被调试应用程序中的监控组件根据所述函数中包含的变量标识对应的指针,获取所述变量对应的变量地址;根据所述被调试应用程序在运行过程中对应的文件中保存的符号表,获取所述函数标识对应的地址范围,并根据所述函数标识对应的地址范围以及所述变量地址,确定所述变量在所述函数中的位置信息;从所述函数中获取所述位置信息对应的程序内容,并对所述程序内容执行哈希操作,生成所述程序内容对应的标识;获取本地保存的编译前生成的所述程序内容对应的标识;当所述生成的程序内容对应的标识与所述本地保存的所述程序内容对应的标识相同时,将所述程序内容对应的标识作为所述函数标识对应的函数地址。
12.如权利要求10所述的装置,其特征在于,还包括动态补丁单元,用于:
在获取所述被调试参量之后,在内存中申请存储空间,并在所述存储空间中加入具有逻辑功能的补丁程序;在函数中的指定位置加入特定指针,所述特定指针指向所述存储空间;当程序运行到所述函数的指定位置时,根据所述特定指针,将中心处理单元CPU运行逻辑指向所述存储空间;当所述存储空间中的补丁程序执行完毕后,将所述CPU运行逻辑指向所述函数。
13.如权利要求10-12任一项所述的装置,其特征在于,还包括处理单元,用于:
当检测到位于远端的多个调制系统发送的调试请求时,根据所述被调试应用程序的连接配置参数,确定与所述被调试应用程序建立连接的至少一个调试系统标识;并根据确定的所述至少一个调试系统标识,与所述至少一个调试系统标识对应的调试系统建立连接,由所述至少一个调试系统通过进程间通信IPC将调试指令发送至所述被调试应用程序的进程空间中;执行所述调试指令。
14.如权利要求13所述的装置,其特征在于,所述处理单元,具体用于:
当本地与至少两个调试系统分别建立连接时,若所述至少两个调试系统针对同一个被调试参量进行调试,则在本地的进程空间中建立指令队列,并根据预设规则将所述至少两个调试系统对应的调试指令进行排序后加入所述指令队列,按照排序顺序依次执行所述指令队列中的调试指令;若所述至少两个调试系统针对不同的被调试参量进行调试,则同时执行所述至少两个调试系统发送的调试指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410584443.XA CN104298602A (zh) | 2014-10-27 | 2014-10-27 | 一种调试应用程序的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410584443.XA CN104298602A (zh) | 2014-10-27 | 2014-10-27 | 一种调试应用程序的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104298602A true CN104298602A (zh) | 2015-01-21 |
Family
ID=52318337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410584443.XA Pending CN104298602A (zh) | 2014-10-27 | 2014-10-27 | 一种调试应用程序的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104298602A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105589807A (zh) * | 2015-12-21 | 2016-05-18 | 中国科学院信息工程研究所 | 一种应用程序间组件能力泄露动态检测方法和系统 |
CN106452807A (zh) * | 2015-08-04 | 2017-02-22 | 深圳市中兴微电子技术有限公司 | 一种网络处理器及报文处理数据的获取方法 |
WO2017139932A1 (zh) * | 2016-02-17 | 2017-08-24 | 吴伟民 | 车辆电子设备的调试方法及系统 |
WO2017215439A1 (zh) * | 2016-06-16 | 2017-12-21 | 中兴通讯股份有限公司 | 一种变量信息提取方法、装置及计算机存储介质 |
CN107562500A (zh) * | 2017-08-29 | 2018-01-09 | 北京小米移动软件有限公司 | 调试装置、方法及设备 |
CN110502418A (zh) * | 2018-05-17 | 2019-11-26 | 长沙博为软件技术股份有限公司 | 一种实现远程调试的方法 |
CN111083563A (zh) * | 2019-12-30 | 2020-04-28 | 深圳市康冠智能科技有限公司 | 电视ui控件的调试方法、装置、电视机及存储介质 |
CN111279318A (zh) * | 2017-10-25 | 2020-06-12 | 沙特阿拉伯石油公司 | 用于收集输入和输出数据的分布式代理以及用于单进程系统和分布式系统的科学内核的源代码 |
CN112527639A (zh) * | 2020-12-02 | 2021-03-19 | 平安医疗健康管理股份有限公司 | 生产环境下的远程调试方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430662B (zh) * | 2008-12-09 | 2010-10-06 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
CN102110046A (zh) * | 2009-12-23 | 2011-06-29 | 北京中电华大电子设计有限责任公司 | 一种仿真工具的c语言单步调试实现方法 |
US20130282545A1 (en) * | 2013-04-20 | 2013-10-24 | Concurix Corporation | Marketplace for Monitoring Services |
-
2014
- 2014-10-27 CN CN201410584443.XA patent/CN104298602A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430662B (zh) * | 2008-12-09 | 2010-10-06 | 东信和平智能卡股份有限公司 | Java语言程序与虚拟机程序共同调试的方法 |
CN102110046A (zh) * | 2009-12-23 | 2011-06-29 | 北京中电华大电子设计有限责任公司 | 一种仿真工具的c语言单步调试实现方法 |
US20130282545A1 (en) * | 2013-04-20 | 2013-10-24 | Concurix Corporation | Marketplace for Monitoring Services |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106452807A (zh) * | 2015-08-04 | 2017-02-22 | 深圳市中兴微电子技术有限公司 | 一种网络处理器及报文处理数据的获取方法 |
CN106452807B (zh) * | 2015-08-04 | 2020-12-29 | 深圳市中兴微电子技术有限公司 | 一种网络处理器及报文处理数据的获取方法 |
CN105589807B (zh) * | 2015-12-21 | 2018-05-11 | 中国科学院信息工程研究所 | 一种应用程序间组件能力泄露动态检测方法和系统 |
CN105589807A (zh) * | 2015-12-21 | 2016-05-18 | 中国科学院信息工程研究所 | 一种应用程序间组件能力泄露动态检测方法和系统 |
WO2017139932A1 (zh) * | 2016-02-17 | 2017-08-24 | 吴伟民 | 车辆电子设备的调试方法及系统 |
WO2017215439A1 (zh) * | 2016-06-16 | 2017-12-21 | 中兴通讯股份有限公司 | 一种变量信息提取方法、装置及计算机存储介质 |
CN107515769A (zh) * | 2016-06-16 | 2017-12-26 | 中兴通讯股份有限公司 | 一种变量信息提取方法及装置 |
CN107562500A (zh) * | 2017-08-29 | 2018-01-09 | 北京小米移动软件有限公司 | 调试装置、方法及设备 |
CN111279318A (zh) * | 2017-10-25 | 2020-06-12 | 沙特阿拉伯石油公司 | 用于收集输入和输出数据的分布式代理以及用于单进程系统和分布式系统的科学内核的源代码 |
CN111279318B (zh) * | 2017-10-25 | 2023-10-27 | 沙特阿拉伯石油公司 | 计算机软件优化系统和方法 |
CN110502418A (zh) * | 2018-05-17 | 2019-11-26 | 长沙博为软件技术股份有限公司 | 一种实现远程调试的方法 |
CN111083563A (zh) * | 2019-12-30 | 2020-04-28 | 深圳市康冠智能科技有限公司 | 电视ui控件的调试方法、装置、电视机及存储介质 |
CN111083563B (zh) * | 2019-12-30 | 2021-09-07 | 深圳市康冠智能科技有限公司 | 电视ui控件的调试方法、装置、电视机及存储介质 |
CN112527639A (zh) * | 2020-12-02 | 2021-03-19 | 平安医疗健康管理股份有限公司 | 生产环境下的远程调试方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298602A (zh) | 一种调试应用程序的方法及装置 | |
CN107431651B (zh) | 一种网络服务的生命周期管理方法及设备 | |
US20150227449A1 (en) | Method and device for developing, compiling and debugging | |
CN114064152B (zh) | 基于动态加载的嵌入式多核调试系统及其调试方法 | |
US9852038B2 (en) | Debugging system and debugging method of multi-core processor | |
CN105975367B (zh) | 移动设备的测试方法和装置 | |
CN103927256A (zh) | 一种控制多个安卓装置的方法 | |
CN105740139B (zh) | 一种基于虚拟环境的嵌入式软件调试方法 | |
CN108234246B (zh) | 一种多向测试服务器网络性能的方法及系统 | |
CN105760289A (zh) | 一种嵌入式系统的调试方法及装置 | |
CN111625383B (zh) | 进程异常事件处理方法、装置、电子设备及存储介质 | |
CN103699481A (zh) | 一种代码调试方法及调试系统 | |
CN111045893A (zh) | 监控任务的执行方法、装置及系统、存储介质、电子装置 | |
CN110750453A (zh) | 基于html5的智能移动端测试方法、系统、服务器及存储介质 | |
CN105677689B (zh) | 日志记录方法及装置 | |
CN103678364B (zh) | 一种动态检测url重定向死循环的方法及装置 | |
CN104092661A (zh) | 虚拟机串口的通信方法及装置 | |
CN111130828A (zh) | 一种智能配网方法、装置及终端设备 | |
CN102238048A (zh) | 一种协议一致性测试方法和系统 | |
CN111168668A (zh) | 一种机器人的控制方法及机器人 | |
CN103034501A (zh) | 一种linux平台的函数调用方法及函数调用装置 | |
CN113656152B (zh) | 基于容器云环境的本地模拟方法、系统、介质和电子设备 | |
CN105677331A (zh) | 一种任务执行方法和装置 | |
CN108984238A (zh) | 应用程序的手势处理方法、装置及电子设备 | |
CN114997102A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150121 |
|
RJ01 | Rejection of invention patent application after publication |