CN104391783A - 一种软件调试方法及装置 - Google Patents
一种软件调试方法及装置 Download PDFInfo
- Publication number
- CN104391783A CN104391783A CN201410353773.8A CN201410353773A CN104391783A CN 104391783 A CN104391783 A CN 104391783A CN 201410353773 A CN201410353773 A CN 201410353773A CN 104391783 A CN104391783 A CN 104391783A
- Authority
- CN
- China
- Prior art keywords
- category information
- operand
- view window
- system view
- trigger event
- 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
本申请公开了一种软件调试方法及装置,所述方法包括:接收触发事件,判断所述触发事件的类型,查询所述触发事件对应的操作对象,在当前的***视图窗口中标记出所述操作对象;按照所述触发事件的类型执行该触发事件对应的业务逻辑。本发明通过在***视图窗口中标记出触发事件对应的操作对象,能够让程序员可视化的看到当前触发的操作对象,这样程序员就能快速定位引起问题的原因,从而找到bug的具***置,提高了软件调试的效率,避免了由程序员根据经验定位bug造成的时间消耗。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种软件调试方法及装置。
背景技术
近年来随着移动互联网的发展与成熟,全面的信息化时代已经到来,移动终端已逐渐占领手机市场。各种基于IOS平台、Android(安卓)平台的应用(App)大量出现。如何能够快速、高效的开发出所需的APP以便抢先占领空白市场是研发人员面临的一个挑战。
在程序开发的整个过程中,程序调试占据了程序员的大部分开发时间,如果能够提高程序员调试的效率将会大大缩短程序的开发时间,从而加快推出产品的时间。在现代基于面向对象编程的程序调试过程中,调试包括寻找bug(漏洞)和修正bug,程序调试的顺序是通过重复的试验收集测试数据,然后根据收集的数据来构造一个假设,假设引起程序bug的原因,最后设计一个实验来证实假设,可见,在程序调试中找到程序bug就是关键点。
目前,寻找bug并理解bug通常占到整个调试工作的80%到90%,所以调试中快速定位bug,将会极大提高程序员的工作效率,而目前程序员只能通过经验定位bug,对于经验丰富的高级程序员还能够比较快速的定位bug,而对于经验缺乏的初级程序员往往只能通过猜测,然后通过实验的方式全局式寻找bug,将会消耗大量的时间。
发明内容
本发明要解决的技术问题是提供一种软件调试方法及装置,能够在软件调试过程中快速定位漏洞,避免了人工定位造成的大量时间消耗。
为解决上述技术问题,本申请的一种软件调试方法,包括:
接收触发事件,判断所述触发事件的类型,查询所述触发事件对应的操作对象,在当前的***视图窗口中标记出所述操作对象;
按照所述触发事件的类型执行该触发事件对应的业务逻辑。
进一步地,所述方法还包括:
在当前的***视图窗口中标记出所述操作对象时,还在所述***视图窗口中显示所述操作对象对应的类的类信息。
进一步地,所述在当前的***视图窗口中标记出所述操作对象,包括:
创建边框对象,按照所述操作对象的尺寸设置所述边框对象的轮廓,将所述边框对象添加到所述操作对象上。
进一步地,所述在所述***视图窗口中显示所述操作对象对应的类的类信息,包括:
在所述***视图窗口中显示类信息显示标签,获取所述类信息,将所述类信息放到所述类信息显示标签上;
获取类信息的长度,按照类信息的长度设置类信息显示标签的边框。
进一步地,所述方法还包括:
在按照类信息的长度设置类信息显示标签的边框后,将所述类信息显示标签的中心位置设置为所述边框对象的中心位置。
进一步地,一种软件调试装置,包括:接收单元、判断单元、查询单元、标记单元和业务逻辑单元,其中:
所述接收单元,用于接收触发事件;
所述判断单元,用于判断所述接收单元接收到的触发事件的类型;
所述查询单元,用于查询所述触发事件对应的操作对象;
所述标记单元,用于在当前的***视图窗口中标记出所述操作对象;
所述业务逻辑单元,用于按照所述触发事件的类型执行该触发事件对应的业务逻辑。
进一步地,所述装置还包括类显示单元,其中:
所述类显示单元,用于在所述标记单元在当前的***视图窗口中标记出所述操作对象时,在所述***视图窗口中显示所述操作对象对应的类的类信息。
进一步地,所述标记单元在当前的***视图窗口中标记出所述操作对象,包括:创建边框对象,按照所述操作对象的尺寸设置所述边框对象的轮廓,将所述边框对象添加到所述操作对象上。
进一步地,所述类显示单元在所述***视图窗口中显示所述操作对象对应的类的类信息,包括:在所述***视图窗口中显示类信息显示标签,获取所述类信息,将所述类信息放到所述类信息显示标签上;获取类信息的长度,按照类信息的长度设置类信息显示标签的边框。
进一步地,所述类显示单元,还用于在按照类信息的长度设置类信息显示标签的边框后,将所述类信息显示标签的中心位置设置为所述边框对象的中心位置。
综上所述,本发明通过在***视图窗口中标记出触发事件对应的操作对象,能够让程序员可视化的看到当前触发的操作对象,这样程序员就能快速定位引起问题的原因,从而找到bug的具***置,提高了软件调试的效率,避免了由程序员根据经验定位bug造成的时间消耗。
附图说明
图1为本申请的软件调试方法的流程图;
图2为本申请实施例的在iOS中实现软件调试方法的流程图;
图3为本申请的软件调试装置的架构图。
具体实施方式
本申请通过在***视图窗口中标记出触发事件对应的操作对象,并且可以进一步显示操作对象对应的类的类信息,然后执行触发事件对应的业务逻辑。当程序员在***视图窗口中进行操作时,提示了触发的操作对象和相应的类的类信息,并且不影响业务逻辑的执行,达到了快速定位bug的效果。
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示,本申请的软件调试方法,包括:
步骤101:接收触发事件,判断触发事件的类型,查询触发事件对应的操作对象;
当程序员在***视图窗口上进行操作后,移动终端平台接收触发事件。程序员进行的操作可以是触碰、摇晃和旋转等任何操作。
不同的操作对应不同的操作对象,例如,对于触碰操作,操作对象为触碰的控件;对于摇晃操作,操作对象为摇晃对应的控件;对于旋转操作,操作对象为旋转操作对应的控件等。
步骤102:在查询出接收到的触发事件对应的操作对象后,在当前的***视图窗口中标记出操作对象;
本申请中,可以采用为操作对象加边框的方式标记出操作对象,在当前的***视图窗口中标记出触发事件对应的操作对象,包括:创建边框对象,按照操作对象的尺寸设置边框对象的轮廓,将边框对象添加到操作对象上。
本申请中通过给操作对象加边框的方式标记出接收到的触发事件对应的操作对象。为操作对象所加的边框还可以设置颜色,如采用红色边框,提高标记的显著性。
步骤103:在标记出操作对象后,按照触发事件的类型执行该触发事件对应的业务逻辑。
在目前的调试方法中,程序员在***视图窗口上进行操作后,移动终端会按照触发事件的类型执行对应的业务逻辑,本申请改变了***行为,首先在当前的***视图窗口中标记出操作对象,然后再去执行原来的业务逻辑,通过这种所见即所得的调试方法,使程序员能够直观的看到当前触发的操作对象,提高了程序员分析bug、定位bug的效率。
本申请中,在步骤102中在当前的***视图窗口中标记出操作对象时,还可以在***视图窗口中显示操作对象对应的类的类信息。在标记操作对象的基础上进一步显示操作对象对应的类的类信息可以进一步缩小bug定位的范围,使程序员更加容易的定位到bug。
在***视图窗口中显示操作对象对应的类的类信息,包括:在***视图窗口中显示类信息显示标签,获取类信息,将类信息放到类信息显示标签上;获取类信息的长度,按照类信息的长度设置类信息显示标签的边框。
此外,在按照类信息的长度设置类信息显示标签的边框后,还可以将类信息显示标签的中心位置设置为边框对象的中心位置。将类信息显示标签的中心位置与边框对象的中心位置设置为相同,可以增强显示效果,便于程序员进行快速查看。
下面以在运行iOS平台的移动终端上进行软件调试为例,对本申请的调试方法进行说明,其中,以程序员的触碰操作为例,操作对象为触碰的控件。
由于iOS平台基于消息转发机制,为了在运行iOS平台的移动终端上实现本申请的调试方法,需要预先在***级别修改总的事件入口,在iOS平台中,当接收到触发事件后,调用sendEvent:方法,本实施例中修改sendEvent:方法所指向的方法体,在新的方法体中执行本申请的在当前的***视图窗口中标记出操作对象,以及进一步显示对应的类的类信息等,之后将触发事件传到sendEvent:方法原来的方法体中,具体的业务逻辑使用原来的方法体。针对触碰操作,当程序员点击iOS界面时,通过sendEvent:方法新的方法体实现标记出触碰对象以及进一步显示对应的类的类信息,然后将触碰事件传到sendEvent:方法原来的方法体中,使用触碰事件原来的业务逻辑进行业务处理。
如图2所示,在运行iOS平台的移动终端上,操作类型为触碰操作时,本申请的软件调试方法,包括:
步骤201:移动终端接收触发事件,判断出接收到的触发事件的类型为触碰事件,查询出触碰事件对应的触碰对象;
本实施例中,查询触碰事件对应的触碰对象的步骤可以包括:
(1)取出触碰事件对应的所有触碰对象,如使用指令event allTouches取出所有触碰对象;
(2)判断触碰对象的数量,如果触碰对象为一个,则执行下一步;如果触碰对象为多个,则结束;
(3)取出第一个触碰对象,如使用指令[allTouches allObjects]objectAtIndex:0取出第一个触碰对象。
步骤202:判断对触碰对象是不是触碰了一次,如果是,则执行步骤203;否则,结束;
步骤203:判断是不是触碰事件的开始点,如果是,则执行步骤204;否则,结束;
事件包括开始、处理中、结束和取消等一系列过程,整个事件有多个时机点。本实施例中,选择开始作为时机点执行下一步。
步骤204:在当前的***视图窗口中标记出触碰对象;
步骤205:在***视图窗口中显示类信息显示标签,获取触碰对象对应的类的类信息,将类信息放到类信息显示标签上;
本实施例中,类信息可以是类的名称等。
步骤206:获取类信息的长度,按照类信息的长度设置类信息显示标签的边框;
本实施例中,在通过边框对象标记触碰对象时,还可以将类信息显示标签的中心位置设置为边框对象的中心位置,以便于程序员查看相关内容。
步骤207:执行触碰事件对应的业务逻辑。
本实施例中,在***视图窗口中,在程序员触碰的位置上还可以显示提示圈,以增加显示效果。提示圈是在触碰位置显示的圆环形效果,显示提示圈的步骤包括:
(a)为触碰对象创建提示圈,设置提示圈的轮廓;
(b)在当前的***视图窗口中设置提示圈的中心位置;
(c)将提示圈加到当前的***视图窗口上开始显示提示圈。
以上是以在运行iOS平台的移动终端上,触发事件为触碰事件为例对本申请的方法进行的说明,但是,本申请的方法并不限于iOS平台以及触碰事件,还可以应用于各种平台包括但不限于Android、WindowsPhone等,触发事件也可以是摇晃事件、旋转事件等多种事件。
如图3所示,本申请还提供了一种软件调试装置,包括:接收单元、判断单元、查询单元、标记单元和业务逻辑单元,其中:
接收单元,用于接收触发事件;
判断单元,用于判断接收单元接收到的触发事件的类型;
查询单元,用于查询触发事件对应的操作对象;
标记单元,用于在当前的***视图窗口中标记出操作对象;
业务逻辑单元,用于按照触发事件的类型执行该触发事件对应的业务逻辑。
本申请的软件调试装置还包括类显示单元,其中:
类显示单元,用于在标记单元在当前的***视图窗口中标记出操作对象时,在***视图窗口中显示操作对象对应的类的类信息。
标记单元在当前的***视图窗口中标记出操作对象,包括:创建边框对象,按照操作对象的尺寸设置边框对象的轮廓,将边框对象添加到操作对象上。
类显示单元在***视图窗口中显示操作对象对应的类的类信息,包括:在***视图窗口中显示类信息显示标签,获取类信息,将类信息放到类信息显示标签上;获取类信息的长度,按照类信息的长度设置类信息显示标签的边框。
类显示单元,还用于在按照类信息的长度设置类信息显示标签的边框后,将类信息显示标签的中心位置设置为边框对象的中心位置。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。
Claims (10)
1.一种软件调试方法,其特征在于,包括:
接收触发事件,判断所述触发事件的类型,查询所述触发事件对应的操作对象,在当前的***视图窗口中标记出所述操作对象;
按照所述触发事件的类型执行该触发事件对应的业务逻辑。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在当前的***视图窗口中标记出所述操作对象时,还在所述***视图窗口中显示所述操作对象对应的类的类信息。
3.如权利要求1或2所述的方法,其特征在于,所述在当前的***视图窗口中标记出所述操作对象,包括:
创建边框对象,按照所述操作对象的尺寸设置所述边框对象的轮廓,将所述边框对象添加到所述操作对象上。
4.如权利要求3所述的方法,其特征在于,所述在所述***视图窗口中显示所述操作对象对应的类的类信息,包括:
在所述***视图窗口中显示类信息显示标签,获取所述类信息,将所述类信息放到所述类信息显示标签上;
获取类信息的长度,按照类信息的长度设置类信息显示标签的边框。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
在按照类信息的长度设置类信息显示标签的边框后,将所述类信息显示标签的中心位置设置为所述边框对象的中心位置。
6.一种软件调试装置,其特征在于,包括:接收单元、判断单元、查询单元、标记单元和业务逻辑单元,其中:
所述接收单元,用于接收触发事件;
所述判断单元,用于判断所述接收单元接收到的触发事件的类型;
所述查询单元,用于查询所述触发事件对应的操作对象;
所述标记单元,用于在当前的***视图窗口中标记出所述操作对象;
所述业务逻辑单元,用于按照所述触发事件的类型执行该触发事件对应的业务逻辑。
7.如权利要求6所述的装置,其特征在于,所述装置还包括类显示单元,其中:
所述类显示单元,用于在所述标记单元在当前的***视图窗口中标记出所述操作对象时,在所述***视图窗口中显示所述操作对象对应的类的类信息。
8.如权利要求6或7所述的装置,其特征在于:
所述标记单元在当前的***视图窗口中标记出所述操作对象,包括:创建边框对象,按照所述操作对象的尺寸设置所述边框对象的轮廓,将所述边框对象添加到所述操作对象上。
9.如权利要求8所述的装置,其特征在于:
所述类显示单元在所述***视图窗口中显示所述操作对象对应的类的类信息,包括:在所述***视图窗口中显示类信息显示标签,获取所述类信息,将所述类信息放到所述类信息显示标签上;获取类信息的长度,按照类信息的长度设置类信息显示标签的边框。
10.如权利要求9所述的装置,其特征在于:
所述类显示单元,还用于在按照类信息的长度设置类信息显示标签的边框后,将所述类信息显示标签的中心位置设置为所述边框对象的中心位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410353773.8A CN104391783A (zh) | 2014-07-24 | 2014-07-24 | 一种软件调试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410353773.8A CN104391783A (zh) | 2014-07-24 | 2014-07-24 | 一种软件调试方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104391783A true CN104391783A (zh) | 2015-03-04 |
Family
ID=52609691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410353773.8A Pending CN104391783A (zh) | 2014-07-24 | 2014-07-24 | 一种软件调试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104391783A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109254923A (zh) * | 2018-09-19 | 2019-01-22 | 北京酷我科技有限公司 | 一种应用内ui调试的方法 |
CN113204300A (zh) * | 2021-07-02 | 2021-08-03 | 杭州星犀科技有限公司 | 设备自动执行操作的方法和*** |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071376A (zh) * | 2007-06-14 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 一种应用程序界面的处理方法及*** |
CN101118469A (zh) * | 2006-07-31 | 2008-02-06 | 索尼株式会社 | 用于基于触觉反馈和压力测量的触摸屏交互的设备和方法 |
CN101339535A (zh) * | 2008-08-21 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种对应用程序进行性能监控的方法及装置 |
CN101727179A (zh) * | 2008-10-30 | 2010-06-09 | 三星电子株式会社 | 对象执行方法和设备 |
CN102455841A (zh) * | 2010-10-20 | 2012-05-16 | 北京创新方舟科技有限公司 | 一种根据用户触摸屏拉动操作进行应用调用的方法与设备 |
CN103092756A (zh) * | 2013-01-08 | 2013-05-08 | 彭勇 | 一种交互式自动化测试***及其方法 |
CN103699485A (zh) * | 2013-12-20 | 2014-04-02 | 金蝶软件(中国)有限公司 | 应用程序调试方法和装置 |
-
2014
- 2014-07-24 CN CN201410353773.8A patent/CN104391783A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101118469A (zh) * | 2006-07-31 | 2008-02-06 | 索尼株式会社 | 用于基于触觉反馈和压力测量的触摸屏交互的设备和方法 |
CN101071376A (zh) * | 2007-06-14 | 2007-11-14 | 腾讯科技(深圳)有限公司 | 一种应用程序界面的处理方法及*** |
CN101339535A (zh) * | 2008-08-21 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种对应用程序进行性能监控的方法及装置 |
CN101727179A (zh) * | 2008-10-30 | 2010-06-09 | 三星电子株式会社 | 对象执行方法和设备 |
CN102455841A (zh) * | 2010-10-20 | 2012-05-16 | 北京创新方舟科技有限公司 | 一种根据用户触摸屏拉动操作进行应用调用的方法与设备 |
CN103092756A (zh) * | 2013-01-08 | 2013-05-08 | 彭勇 | 一种交互式自动化测试***及其方法 |
CN103699485A (zh) * | 2013-12-20 | 2014-04-02 | 金蝶软件(中国)有限公司 | 应用程序调试方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109254923A (zh) * | 2018-09-19 | 2019-01-22 | 北京酷我科技有限公司 | 一种应用内ui调试的方法 |
CN113204300A (zh) * | 2021-07-02 | 2021-08-03 | 杭州星犀科技有限公司 | 设备自动执行操作的方法和*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107506291B (zh) | 一种基于数据采集的分析方法及装置 | |
CN102970657B (zh) | 在社群网络中分享群组状态的***及其方法 | |
CN105404620A (zh) | 一种表单校验的方法和装置 | |
CN103226442B (zh) | 一种批量处理文件的方法和装置 | |
CN106330682A (zh) | 即时通信应用的消息处理方法及移动终端 | |
CN104572436B (zh) | 自动调试与防错方法及装置 | |
CN103365446A (zh) | 一种手写输入方法及装置 | |
CN107333325A (zh) | 一种网络搜索方法及移动终端 | |
CN113194024B (zh) | 信息显示方法、装置和电子设备 | |
CN110889056A (zh) | 页面标记的方法及装置 | |
CN104519262A (zh) | 获取视频数据的方法、装置及终端 | |
CN106533914A (zh) | 消息通知方法及装置 | |
CN110109805A (zh) | 一种消息通知方法及装置 | |
CN104391783A (zh) | 一种软件调试方法及装置 | |
CN106375194A (zh) | 即时通信应用的消息处理方法及移动终端 | |
CN107465807A (zh) | 一种短信显示方法及终端 | |
CN107016262A (zh) | 应用程序权限管理方法及客户端 | |
CN105677689B (zh) | 日志记录方法及装置 | |
CN112256044B (zh) | 减少人机交互等待时长的方法、设备及存储介质 | |
CN112214416B (zh) | 调试小程序的方法、装置、电子设备和存储介质 | |
CN109241031A (zh) | 模型生成方法、模型使用方法、装置、***及存储介质 | |
CN109582888A (zh) | 网页书签整理方法及*** | |
CN110515842B (zh) | 一种程序调试方法、装置及电子设备和存储介质 | |
CN111694477B (zh) | 标签处理方法、装置及电子设备 | |
CN112000875A (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: 20150304 |
|
RJ01 | Rejection of invention patent application after publication |