CN110502440A - 调试定位信息的获取方法、装置、电子设备及存储介质 - Google Patents
调试定位信息的获取方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110502440A CN110502440A CN201910736648.8A CN201910736648A CN110502440A CN 110502440 A CN110502440 A CN 110502440A CN 201910736648 A CN201910736648 A CN 201910736648A CN 110502440 A CN110502440 A CN 110502440A
- Authority
- CN
- China
- Prior art keywords
- function
- information
- destination application
- server
- location information
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- 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/3636—Software debugging by tracing the execution of the program
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)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本公开关于一种调试定位信息的获取方法、装置、电子设备及存储介质,所述方法应用于客户端,包括:监测目标应用程序的运行状态;在目标应用程序的功能未发生崩溃时,将其所调用的各个函数的路径实时上传至服务器;当目标应用程序的功能发生崩溃时,从服务器获取基于所上传的路径确定的路径信息;获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将参数信息作为目标应用程序的调试定位信息。由于客户端记录了目标应用程序从启动至崩溃发生前调用各个函数的路径并实时上传至服务器,在崩溃发生时,能够从服务器获取路径信息,该路径信息并不会随着调用栈的破坏而缺失,因此可以利用该路径信息获取Bug定位时所需的调试定位信息。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种调试定位信息的获取方法、装置、电子设备及存储介质。
背景技术
随着应用程序App的功能越来越多样化,其代码量也不可避免的增加,但程序代码中存在的漏洞(Bug)会使App在运行过程中出现数据丢失、非正常中断等崩溃现象,严重影响了用户体验。
为了对程序代码进行Bug定位,必须获取有效的调试定位信息。相关技术中,当某个App在用户的使用过程中功能发生崩溃时,客户端会回溯调用栈,以获得调用栈信息;将调用栈信息作为调试定位信息上报给服务器。由于调用栈信息中包括App在使用过程中对各个函数的调用关系,因此可以根据这些信息确定出Bug的发生位置。
然而,调用栈有时会因系统错误等原因而被破坏,造成调用栈信息缺乏,使客户端无法获取有效的调试定位信息并上报给服务器,进而无法定位Bug。
发明内容
本公开提供一种调试定位信息的获取方法、装置、电子设备及存储介质,以至少解决相关技术中调用栈被破坏时,无法获取有效的调试定位信息的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种调试定位信息的获取方法,应用于客户端,包括:
监测目标应用程序的运行状态;
在所述目标应用程序的功能未发生崩溃时,将所述目标应用程序所调用的各个函数的路径实时上传至服务器;
当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;
获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
可选的,当所述目标应用程序的功能发生崩溃时,在从服务器获取基于所上传的各个函数的路径确定的路径信息的步骤之前,还包括:
判断调用栈是否被破坏;如果否,则回溯调用栈,获得所述目标应用程序的调试定位信息;如果是,则执行所述从服务器获取基于所上传的各个函数的路径确定的路径信息的步骤。
可选的,当所述目标应用程序的功能发生崩溃时,在从服务器获取基于所上传的各个函数的路径确定的路径信息的步骤之前,还包括:
判断用户是否已确认协助调试协议,如果是,则执行所述从服务器获取基于所上传的各个函数的路径确定的路径信息的步骤;如果否,则从服务器获取协助调试协议输出给用户,在用户确认后返回所述监测目标应用程序的运行状态的步骤,并在目标应用程序重新启动后,将所述目标应用程序调用各个函数的路径实时上传至服务器。
可选的,所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,包括:各个函数被调用时的输入参数和返回值;
所述获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息的步骤,包括:
根据服务器下发的路径信息,开启所述路径信息中需要钩取参数信息的各个函数的钩子Hook;
获取所述需要钩取参数信息的各个函数的Hook钩取的,各个函数被调用时的输入参数和返回值;
将所述各个函数被调用时的输入参数和返回值作为所述目标应用程序发生本次崩溃时的调试定位信息,并上报至服务器。
可选的,所述获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息的步骤之后,还包括:
释放所述需要钩取参数信息的各个函数的Hook,并恢复所述目标应用程序的运行环境。
根据本公开实施例的第二方面,提供一种调试定位信息的获取方法,应用于服务器,包括:
接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径;
从所述路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息;
当接收到客户端发送的获取路径信息的请求后,下发所述路径信息,以使客户端获得所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
根据本公开实施例的第三方面,提供一种调试定位信息的获取装置,应用于客户端,包括:
监测模块,被配置为执行监测目标应用程序的运行状态;
上传模块,被配置为执行在所述目标应用程序的功能未发生崩溃时,将所述目标应用程序所调用的各个函数的路径实时上传至服务器;
路径信息获取模块,被配置为执行当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;
参数信息获得模块,被配置为执行获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
可选的,所述调试定位信息的获取装置还包括:
第一判断模块,被配置为执行所述路径信息获取模块当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息之前,判断调用栈是否被破坏;如果否,则回溯调用栈,获得所述目标应用程序的调试定位信息;如果是,则触发所述路径信息获取模块从服务器获取基于所上传的各个函数的路径确定的路径信息。
可选的,所述调试定位信息的获取装置还包括:
第二判断模块,被配置为执行所述路径信息获取模块当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息之前,判断用户是否已确认协助调试协议,如果是,则触发所述路径信息获取模块从服务器获取基于所上传的各个函数的路径确定的路径信息;如果否,则从服务器获取协助调试协议输出给用户,在用户确认后触发所述监测模块监测目标应用程序的运行状态,并在目标应用程序重新启动后,将所述目标应用程序调用各个函数的路径实时上传至服务器。
可选的,所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,包
括:各个函数被调用时的输入参数和返回值;
所述参数信息获得模块,包括:
开启单元,被配置为执行根据服务器下发的路径信息,开启所述路径信息中需要钩取参数信息的各个函数的钩子Hook;
获取单元,被配置为执行获取所述需要钩取参数信息的各个函数的Hook钩取的,各个函数被调用时的输入参数和返回值;
上报单元,被配置为执行将所述各个函数被调用时的输入参数和返回值作为所述目标应用程序发生本次崩溃时的调试定位信息,并上报至服务器。
可选的,所述调试定位信息的获取装置还包括:
运行环境恢复模块,被配置为执行在参数信息获取模块获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息之后,释放所述需要钩取参数信息的各个函数的Hook,并恢复所述目标应用程序的运行环境。
根据本公开实施例的第四方面,提供一种调试定位信息的获取装置,应用于服务器,包括:
接收模块,被配置为执行接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径;
路径信息确定模块,被配置为执行从所述路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息;
下发模块,被配置为执行当接收到客户端发送的获取路径信息的请求后,下发所述路径信息,以使客户端获得所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
根据本公开实施例的第五方面,提供一种客户端,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第一方面任一所述的调试定位信息的获取方法。
根据本公开实施例的第六方面,提供一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现上述第二方面任一所述的调试定位信息的获取方法。
根据本公开实施例的第七方面,提供一种存储介质,当所述存储介质中的指令由客户端的处理器执行时,使得客户端能够执行上述第一方面任一所述的调试定位信息的获取方法。
根据本公开实施例的第八方面,提供一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述第二方面任一所述的调试定位信息的获取方法。
根据本公开实施例的第九方面,提供一种计算机程序产品,当所述计算机程序产品由客户端的处理器执行时,使得客户端能够执行上述第一方面任一所述的调试定位信息的获取方法。
根据本公开实施例的第十方面,提供一种计算机程序产品,当所述计算机程序产品由服务器的处理器执行时,使得服务器能够执行上述第二方面任一所述的调试定位信息的获取方法。
本公开的实施例提供的技术方案至少带来以下有益效果:通过监测目标应用程序的运行状态;在目标应用程序的功能未发生崩溃时,将目标应用程序所调用的各个函数的路径实时上传至服务器;当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。由于客户端记录了目标应用程序从启动至崩溃发生前调用各个函数的路径并实时上传至服务器,在崩溃发生时,能够从服务器获取路径信息,该路径信息并不会随着调用栈的破坏而缺失,因此客户端可以利用该路径信息获取Bug定位时所需的调试定位信息。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的应用于客户端的调试定位信息的获取方法的一种流程图。
图2是根据一示例性实施例示出的应用于客户端的调试定位信息的获取方法的另一种流程图。
图3是根据一示例性实施例示出的应用于服务器的调试定位信息的获取方法的一种流程图。
图4是根据一示例性实施例示出的应用于服务器的调试定位信息的获取方法的另一种流程图。
图5是根据一示例性实施例示出的应用于客户端的调试定位信息的获取方法的一种框图。
图6是根据一示例性实施例示出的应用于服务器的调试定位信息的获取方法的一种框图。
图7是根据一示例性实施例示出的一种客户端的框图。
图8是根据一示例性实施例示出的一种服务器的框图。
图9是根据一示例性实施例示出的一种用于获取调试定位信息的设备的框图。
图10是根据一示例性实施例示出的另一种用于获取调试定位信息的设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的调试定位信息的获取方法的一种流程图。如图所示,所述调试定位信息的获取方法用于客户端,包括以下步骤:
在步骤S101中,监测目标应用程序的运行状态。
在一种可能的实施方式中,客户端中设置一个监测程序,以监测目标应用程序的运行状态并获取调试定位信息。
在步骤S102中,在目标应用程序的功能未发生崩溃时,将目标应用程序所调用的各个函数的路径实时上传至服务器。
在步骤S103中,当目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息。
可以理解,目标应用程序运行期间,可能会在使用某些功能时大概率地出现异常。为了不影响用户的正常使用,开发人员可以利用尝试捕捉异常try-catch函数对上述可能出现的异常进行捕获和处理;而那些未被try-catch函数捕获的异常则会触发未被捕获异常Uncaught Exception事件,并导致App功能的崩溃。因此,在一种可能的实施方式中,客户端通过监测Uncaught Exception是否被触发,来判断App的功能是否发生崩溃。
本步骤中,目标应用程序的功能发生崩溃时可以有多种表现,例如:用户在使用App的过程中出现闪退;或者,用户点击App界面中的某一功能按钮后,App长时间无响应,必须由用户强制关闭App。
在步骤S104中,获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将参数信息作为目标应用程序的调试定位信息。
其中,路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,可以包括:各个函数被调用时的输入参数和返回值。
本实施例中,可以在App可能调用的各个函数中预设埋点代码来记录App使用过程中调用各个函数的路径,并在实时上传至服务器后,由服务器根据预设配置确定路径信息。在一种可能的实施方式中,路径信息中包含的函数是会以大概率出现Bug的函数,因此,客户端需要获取这些函数被调用时的参数信息,以帮助开发人员有效地追踪崩溃发生的原因。
App功能的崩溃会直接影响用户体验,特别是当App的日活跃用户数量较大时,即便是偶现的缺乏调试信息的崩溃的出现,也会造成用户流失。本实施例中,由于客户端记录了目标应用程序从启动至崩溃发生前调用各个函数的路径并实时上传至服务器,在崩溃发生时,能够从服务器获取路径信息,该路径信息并不会随着调用栈的破坏而缺失,因此客户端可以根据该路径信息获取Bug定位时所需的调试定位信息,从而使开发人员高效地解决App崩溃问题。
由于相关技术中,调用栈被破坏这种情况是偶现的,无法通过回溯调用栈获得有效的调试定位信息的情况也很少出现。因此,本公开实施例可以在无法从调用栈获得有效的调试定位信息的情况下,从服务器获取路径信息。具体的流程,参见图2,包括以下步骤:
在步骤S201中,监测目标应用程序的运行状态。
在步骤S202中,当目标应用程序发生崩溃时,判断调用栈是否被破坏;如果是,则执行步骤S203;如果否,则执行步骤S204。
在步骤S203中,判断用户是否已确认协助调试协议;如果是,则执行步骤S205;如果否,则执行步骤S209。
当客户端接收到服务器下发的协助调试协议后,可以在App的预设界面中进行展示,用户通过勾选的方式选中“同意”选项进行确认;客户端判断用户已确认协助调试协议之后,便开始记录App启动后调用各个函数的路径。
在步骤S204中,回溯调用栈,获得目标应用程序的调试定位信息,并执行步骤S208。
在步骤S205中,从服务器获取路径信息。
本步骤中,路径信息是在目标应用程序的功能未发生崩溃且用户确认了协助调试协议的情况下,将目标应用程序所调用各个函数的路径实时上传至服务器后,由服务器确定的。其中,协助调试协议可以在目标应用程序第一次发生崩溃时,下发至客户端。
具体的,客户端可以向服务器发送获取路径信息的请求,服务器接收到请求后,下发路径信息。
在步骤S206中,根据路径信息,开启路径信息中需要钩取参数信息的各个函数的钩子Hook。
在步骤S207中,获取需要钩取参数信息的各个函数的Hook钩取的,各个函数被调用时的输入参数和返回值,并将各个函数被调用时的输入参数和返回值作为目标应用程序发生本次崩溃时的调试定位信息。
在步骤S208中,将调试定位信息上报至服务器。
在步骤S209中,从服务器获取协助调试协议输出给用户。
在步骤S210中,判断用户是否已确认协助调试协议;如果是,则返回步骤S202;如果否,则执行步骤S211。
在步骤S211中,通知服务器用户未确认协助调试协议,并返回步骤S202。
图2所示的实施例仅在调用栈被破坏的情况下,从服务器获取路径信息,具有较好的兼容性。
图3是根据一示例性实施例示出的调试定位信息的获取方法的一种流程图。如图所示,所述调试定位信息的获取方法用于服务器,包括以下步骤:
在步骤S301中,接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径。
在步骤S302中,从该路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息。
在步骤S303中,当接收到客户端发送的获取路径信息的请求后,下发路径信息,以使客户端获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将参数信息作为目标应用程序的调试定位信息。
具体的,客户端可以在监测到目标应用程序的功能发生崩溃时,向服务器发送获取路径信息的请求。
其中,路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,可以包括:各个函数被调用时的输入参数和返回值。
图4是根据一示例性实施例示出的调试定位信息的获取方法的另一种流程图。如图所示,所述调试定位信息的获取方法用于服务器,包括:
在步骤S401中,在目标应用程序崩溃后重启时,将协助调试协议下发给客户端。
具体的,目标应用程序重新启动时,向服务器发送启动请求,服务器接收到该请求后,将协助调试协议下发给客户端。
在步骤S402中,判断是否接收到用户未确认协助调试协议的通知;如果是,则返回步骤S401,在目标应用程序再次崩溃重启时,将协助调试协议下发给客户端;如果否,则执行步骤S403。
在步骤S403中,接收客户端实时上传的路径并保存。
在步骤S404中,判断是否接收到获取路径信息的请求;如果否,则返回步骤S403;如果是,则执行步骤S405。
在步骤S405中,根据预设配置,从保存的路径中获得路径信息。
应当理解,App使用过程中会调用大量函数,这些函数中有些是会以大概率出现Bug的。因此,在一种可能的实施方式中,开发人员对服务器进行配置时,可以将包含大概率发生Bug的函数的路径作为路径信息。
例如,目标应用程序从启动至崩溃发生前调用各个函数的路径是func4—func3—func2—func1,由于只有func3和func2是会以大概率发生Bug的函数,因此只需要将func3-func2作为路径信息下发至客户端。
这里,服务器可以在接收到获取路径信息的请求之前,就从保存的路径中确定路径信息,也可以收到上述请求后,再确定路径信息。
在步骤S406中,将路径信息下发至客户端。
这样,客户端就可以获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将参数信息作为目标应用程序的调试定位信息。
在步骤S407中,接收客户端发送的调试定位信息。
可以理解的是,开发人员在配置服务器时,初步确定了Bug存在于哪部分路径,使服务器对客户端上传的路径按照预设配置进行筛选,避免客户段钩取获得大量无用的参数信息,减少了开发人员定位Bug的工作量的同时,提高了Bug定位效率。
此外,由于Hook的开启会影响App性能,因此当App的功能第一发生崩溃后,可以先判断调用栈是否被破坏,以尽可能避免降低APP性能,进一步提高了用户体验。
图5是根据一示例性实施例示出的一种调试定位信息的获取装置的框图。参照图5,该装置包括监测模块510,上传模块520,路径信息获取模块530和参数信息获得模块540。
该监测模块510,被配置为执行监测目标应用程序的运行状态;
该上传模块520,被配置为执行在所述目标应用程序的功能未发生崩溃时,将所述目标应用程序所调用的各个函数的路径实时上传至服务器;
该路径信息获取模块530,被配置为执行当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;
该参数信息获得模块540,被配置为执行获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将参数信息作为目标应用程序的调试定位信息。
在一种可能的实施方式中,所述调试定位信息的获取装置还包括:
第一判断模块,被配置为执行所述路径信息获取模块530当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息之前,判断调用栈是否被破坏;如果否,则回溯调用栈,获得所述目标应用程序的调试定位信息;如果是,则触发所述路径信息获取模块530从服务器获取基于所上传的各个函数的路径确定的路径信息。
在一种可能的实施方式中,所述调试定位信息的获取装置还包括:
第二判断模块,被配置为执行所述路径信息获取模块530当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息之前,判断用户是否已确认协助调试协议,如果是,则触发所述路径信息获取模块530从服务器获取基于所上传的各个函数的路径确定的路径信息;如果否,则从服务器获取协助调试协议输出给用户,在用户确认后触发所述监测模块510监测目标应用程序的运行状态,并在目标应用程序重新启动后,将所述目标应用程序调用各个函数的路径实时上传至服务器。
在一种可能的实施方式中,所述路径信息中包含的各个函数被目标应用程序调用时的参数信息,包括:各个函数被调用时的输入参数和返回值;
参数信息获取模块540,包括:
开启单元,被配置为执行根据服务器下发的路径信息,开启路径信息中需要钩取参数信息的各个函数的钩子Hook;
获取单元,被配置为执行获取需要钩取参数信息的各个函数的Hook钩取的,各个函数被调用时的输入参数和返回值;
上报单元,被配置为执行将各个函数被调用时的输入参数和返回值作为目标应用程序发生本次崩溃时的调试定位信息,并上报至服务器。
在一种可能的实施方式中,所述调试定位信息的获取装置还包括:
运行环境恢复模块,被配置为执行在参数信息获取模块获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将参数信息作为目标应用程序的调试定位信息之后,释放所述需要钩取参数信息的各个函数的Hook,并恢复目标应用程序的运行环境。
本公开的实施例提供的技术方案至少带来以下有益效果:通过监测目标应用程序的运行状态;在目标应用程序的功能未发生崩溃时,将目标应用程序所调用的各个函数的路径实时上传至服务器;当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;获得路径信息中包含的各个函数被目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。由于客户端记录了目标应用程序从启动至崩溃发生前调用各个函数的路径并实时上传至服务器,在崩溃发生时,能够从服务器获取路径信息,该路径信息并不会随着调用栈的破坏而缺失,因此客户端可以利用该路径信息获取Bug定位时所需的调试定位信息。
图6是根据一示例性实施例示出的一种调试定位信息的获取装置的框图。参照图6,该装置包括接收模块610,路径信息确定模块620和下发模块630。
该接收模块610,被配置为执行接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径;
该路径信息确定模块620,被配置为执行从所述路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息;
该下发模块630,被配置为执行当接收到客户端发送的获取路径信息的请求后,下发所述路径信息,以使客户端获得所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开还提供了一种客户端,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
监测目标应用程序的运行状态;
在所述目标应用程序的功能未发生崩溃时,将所述目标应用程序所调用的各个函数的路径实时上传至服务器;
当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;
获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
本公开还提供了一种服务器,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现如下步骤:
接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径;
从所述路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息;
当接收到客户端发送的获取路径信息的请求后,下发所述路径信息,以使客户端获得所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
图9是根据一示例性实施例示出的一种用于获取调试定位信息的设备900的框图。例如,设备900可以为计算机、智能手机以及平板设备等。
参照图9,设备900可以包括以下一个或多个组件:处理组件902,存储器904,电源组件906,多媒体组件908,音频组件910,输入/输出(I/O)接口912,传感器组件914,以及通信组件916。
处理组件902通常控制设备900的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件902可以包括一个或多个处理器920来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件902可以包括一个或多个模块,便于处理组件902和其他组件之间的交互。例如,处理组件902可以包括多媒体模块,以方便多媒体组件908和处理组件902之间的交互。
存储器904被配置为存储各种类型的数据以支持在设备900的操作。这些数据的示例包括用于在设备900上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器904可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件906为设备900的各种组件提供电力。电源组件906可以包括电源管理系统,一个或多个电源,及其他与为设备900生成、管理和分配电力相关联的组件。
多媒体组件908包括在所述设备900和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件908包括一个前置摄像头和/或后置摄像头。当设备900处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件910被配置为输出和/或输入音频信号。例如,音频组件910包括一个麦克风(MIC),当设备900处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器904或经由通信组件916发送。在一些实施例中,音频组件910还包括一个扬声器,用于输出音频信号。
I/O接口912为处理组件902和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件914包括一个或多个传感器,用于为设备900提供各个方面的状态评估。例如,传感器组件914可以检测到设备900的打开/关闭状态,组件的相对定位,例如所述组件为设备900的显示器和小键盘,传感器组件914还可以检测设备900或设备900一个组件的位置改变,用户与设备900接触的存在或不存在,设备900方位或加速/减速和设备900的温度变化。传感器组件914可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件914还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件914还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件916被配置为便于设备900和其他设备之间有线或无线方式的通信。设备900可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件916经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件916还包括近场通信(NFC)模块,以促进短程通信。
在示例性实施例中,设备900可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述任一种调试定位信息的获取方法。
图10是根据一示例性实施例示出的一种用于获取调试定位信息的设备1000的框图。例如,设备1000可以被提供为一服务器。参照图10,设备1000包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理组件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行上述任一种调试定位信息的获取方法。
设备1000还可以包括一个电源组件1026被配置为执行设备1000的电源管理,一个有线或无线网络接口1050被配置为将设备1000连接到网络,和一个输入输出(I/O)接口1058。设备1000可以操作基于存储在存储器1032的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种存储介质,所述存储介质内存储有计算机程序,当所述计算机程序被处理器执行时,实现上述任一种调试定位信息的获取方法。
可选地,该存储介质可以是非临时性计算机可读存储介质,示例性的,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一种调试定位信息的获取方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求书限定。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由权利要求书来限制。
Claims (10)
1.一种调试定位信息的获取方法,其特征在于,应用于客户端,包括:
监测目标应用程序的运行状态;
在所述目标应用程序的功能未发生崩溃时,将所述目标应用程序所调用的各个函数的路径实时上传至服务器;
当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;
获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
2.根据权利要求1所述的调试定位信息的获取方法,其特征在于,当所述目标应用程序的功能发生崩溃时,在从服务器获取基于所上传的各个函数的路径确定的路径信息的步骤之前,还包括:
判断调用栈是否被破坏;如果否,则回溯调用栈,获得所述目标应用程序的调试定位信息;如果是,则执行所述从服务器获取基于所上传的各个函数的路径确定的路径信息的步骤。
3.根据权利要求2所述的调试定位信息的获取方法,其特征在于,所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,包括:各个函数被调用时的输入参数和返回值;
所述获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息的步骤,包括:
根据服务器下发的路径信息,开启所述路径信息中需要钩取参数信息的各个函数的钩子Hook;
获取所述需要钩取参数信息的各个函数的Hook钩取的,各个函数被调用时的输入参数和返回值;
将所述各个函数被调用时的输入参数和返回值作为所述目标应用程序发生本次崩溃时的调试定位信息,并上报至服务器。
4.一种调试定位信息的获取方法,其特征在于,应用于服务器,包括:
接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径;
从所述路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息;
当接收到客户端发送的获取路径信息的请求后,下发所述路径信息,以使客户端获得所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
5.一种调试定位信息的获取装置,其特征在于,应用于客户端,包括:
监测模块,被配置为执行监测目标应用程序的运行状态;
上传模块,被配置为执行在所述目标应用程序的功能未发生崩溃时,将所述目标应用程序所调用的各个函数的路径实时上传至服务器;
路径信息获取模块,被配置为执行当所述目标应用程序的功能发生崩溃时,从服务器获取基于所上传的各个函数的路径确定的路径信息;
参数信息获得模块,被配置为执行获得路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
6.一种调试定位信息的获取装置,其特征在于,应用于服务器,包括:
接收模块,被配置为执行接收目标应用程序在功能未发生崩溃时,所调用各个函数的路径;
路径信息确定模块,被配置为执行从所述路径中确定出需要钩取参数信息的函数的所在路径,作为路径信息;
下发模块,被配置为执行当接收到客户端发送的获取路径信息的请求后,下发所述路径信息,以使客户端获得所述路径信息中包含的各个函数被所述目标应用程序调用时的参数信息,并将所述参数信息作为所述目标应用程序的调试定位信息。
7.一种客户端,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至3中任一项所述的调试定位信息的获取方法。
8.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求4所述的调试定位信息的获取方法。
9.一种存储介质,当所述存储介质中的指令由客户端的处理器执行时,使得客户端能够执行如权利要求1至3中任一项所述的调试定位信息的获取方法。
10.一种存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求4所述的调试定位信息的获取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910736648.8A CN110502440A (zh) | 2019-08-09 | 2019-08-09 | 调试定位信息的获取方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910736648.8A CN110502440A (zh) | 2019-08-09 | 2019-08-09 | 调试定位信息的获取方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110502440A true CN110502440A (zh) | 2019-11-26 |
Family
ID=68587951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910736648.8A Pending CN110502440A (zh) | 2019-08-09 | 2019-08-09 | 调试定位信息的获取方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110502440A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291374A (zh) * | 2020-02-20 | 2020-06-16 | 支付宝(杭州)信息技术有限公司 | 一种应用程序的检测方法、装置及设备 |
CN113835912A (zh) * | 2020-06-24 | 2021-12-24 | 北京新氧科技有限公司 | 应用程序的崩溃信息处理方法及设备 |
US20210406155A1 (en) * | 2020-06-28 | 2021-12-30 | Baidu Online Network Technology (Beijing) Co., Ltd. | Methods for configuring device debugging environment and configuration server |
CN114531452A (zh) * | 2022-01-27 | 2022-05-24 | 中汽创智科技有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN115842762A (zh) * | 2021-08-30 | 2023-03-24 | 青岛海尔科技有限公司 | 一种设备调试方法、装置及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201770A (zh) * | 2006-12-15 | 2008-06-18 | 大唐移动通信设备有限公司 | 一种系统崩溃前重要信息的保存方法及系统 |
US20100257255A1 (en) * | 2009-04-03 | 2010-10-07 | Phillips Derek J | Tracking remote browser crashes via cookies |
CN106133698A (zh) * | 2014-03-17 | 2016-11-16 | 微软技术许可有限责任公司 | 用于用户模式崩溃报告的框架 |
CN106326025A (zh) * | 2016-08-23 | 2017-01-11 | 乐视控股(北京)有限公司 | 浏览器异常处理方法及装置 |
CN106371940A (zh) * | 2015-07-21 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种程序崩溃解决方法及装置 |
CN106708643A (zh) * | 2016-11-14 | 2017-05-24 | 武汉斗鱼网络科技有限公司 | 异常信息处理方法及装置 |
CN107480026A (zh) * | 2017-06-22 | 2017-12-15 | 深圳天珑无线科技有限公司 | 终端崩溃处理方法、终端以及具有存储功能的装置 |
CN108763060A (zh) * | 2018-04-27 | 2018-11-06 | 广州华多网络科技有限公司 | Android系统中Native层崩溃溯源方法、装置、存储介质及终端 |
-
2019
- 2019-08-09 CN CN201910736648.8A patent/CN110502440A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201770A (zh) * | 2006-12-15 | 2008-06-18 | 大唐移动通信设备有限公司 | 一种系统崩溃前重要信息的保存方法及系统 |
US20100257255A1 (en) * | 2009-04-03 | 2010-10-07 | Phillips Derek J | Tracking remote browser crashes via cookies |
CN106133698A (zh) * | 2014-03-17 | 2016-11-16 | 微软技术许可有限责任公司 | 用于用户模式崩溃报告的框架 |
CN106371940A (zh) * | 2015-07-21 | 2017-02-01 | 腾讯科技(深圳)有限公司 | 一种程序崩溃解决方法及装置 |
CN106326025A (zh) * | 2016-08-23 | 2017-01-11 | 乐视控股(北京)有限公司 | 浏览器异常处理方法及装置 |
CN106708643A (zh) * | 2016-11-14 | 2017-05-24 | 武汉斗鱼网络科技有限公司 | 异常信息处理方法及装置 |
CN107480026A (zh) * | 2017-06-22 | 2017-12-15 | 深圳天珑无线科技有限公司 | 终端崩溃处理方法、终端以及具有存储功能的装置 |
CN108763060A (zh) * | 2018-04-27 | 2018-11-06 | 广州华多网络科技有限公司 | Android系统中Native层崩溃溯源方法、装置、存储介质及终端 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111291374A (zh) * | 2020-02-20 | 2020-06-16 | 支付宝(杭州)信息技术有限公司 | 一种应用程序的检测方法、装置及设备 |
CN113835912A (zh) * | 2020-06-24 | 2021-12-24 | 北京新氧科技有限公司 | 应用程序的崩溃信息处理方法及设备 |
CN113835912B (zh) * | 2020-06-24 | 2024-02-09 | 北京新氧科技有限公司 | 应用程序的崩溃信息处理方法及设备 |
US20210406155A1 (en) * | 2020-06-28 | 2021-12-30 | Baidu Online Network Technology (Beijing) Co., Ltd. | Methods for configuring device debugging environment and configuration server |
CN115842762A (zh) * | 2021-08-30 | 2023-03-24 | 青岛海尔科技有限公司 | 一种设备调试方法、装置及系统 |
CN114531452A (zh) * | 2022-01-27 | 2022-05-24 | 中汽创智科技有限公司 | 一种数据获取方法、装置、设备及存储介质 |
CN114531452B (zh) * | 2022-01-27 | 2024-03-08 | 中汽创智科技有限公司 | 一种数据获取方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110502440A (zh) | 调试定位信息的获取方法、装置、电子设备及存储介质 | |
CN107436777B (zh) | 移动终端、应用程序崩溃处理方法及装置 | |
WO2020192311A1 (zh) | 主从服务器切换方法、装置、电子设备及存储介质 | |
CN109492073B (zh) | 日志搜索方法、日志搜索装置和计算机可读存储介质 | |
CN104951377B (zh) | 智能家居终端的异常处理方法及装置 | |
CN105703932B (zh) | 日志记录上传方法、日志记录接收方法、终端及服务器 | |
JP6250844B2 (ja) | 消費電力制御方法、装置、プログラム及び記録媒体 | |
CN105635266B (zh) | 用于上报数据的方法、装置及终端 | |
CN109542715A (zh) | 采集应用程序性能数据的方法、装置及终端设备 | |
CN108027697A (zh) | 控制显示界面的方法及装置 | |
CN110945467B (zh) | 一种免打扰方法和终端 | |
CN106231072B (zh) | 消息提醒的控制方法、装置以及终端设备 | |
CN109951701A (zh) | 监控故障处理方法及装置 | |
CN106254669A (zh) | 数据流量提醒方法及装置 | |
CN107197088B (zh) | 基于安卓移动设备的截图方法与装置 | |
CN107276795A (zh) | 基于容器的信息处理方法和装置、以及服务器和终端 | |
CN113934331A (zh) | 信息处理方法、装置及存储介质 | |
CN104158851B (zh) | 一种网络业务的分发系统、方法和设备 | |
CN110457192A (zh) | 一种文件监控方法及装置、终端、存储介质 | |
CN107039054B (zh) | 录音方法及装置 | |
CN109491655A (zh) | 一种输入事件处理方法及装置 | |
CN106598811B (zh) | 异常事件处理方法、装置及终端 | |
CN109756615B (zh) | 一种信息提示方法、装置、终端及存储介质 | |
CN113067757A (zh) | 信息发送和存储方法、装置和介质 | |
CN112231132A (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 |