CN105260257B - 解决程序运行期间停止响应的方法和装置 - Google Patents
解决程序运行期间停止响应的方法和装置 Download PDFInfo
- Publication number
- CN105260257B CN105260257B CN201510768838.XA CN201510768838A CN105260257B CN 105260257 B CN105260257 B CN 105260257B CN 201510768838 A CN201510768838 A CN 201510768838A CN 105260257 B CN105260257 B CN 105260257B
- Authority
- CN
- China
- Prior art keywords
- program
- module
- call stack
- response
- found
- 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.)
- Active
Links
Abstract
本发明公开了一种解决程序运行期间停止响应的方法和装置,其中,解决程序运行期间停止响应的方法,包括以下步骤:出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;对比多次调用栈的结果,找到程序一直正在执行的函数名称;对于找到的函数名称,通过命令找到函数的编译入口地址;对找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码。达到快速定位引发问题的具体代码的目的。
Description
技术领域
本发明涉及数据处理领域,具体地,涉及一种解决程序运行期间停止响应的方法和装置。
背景技术
目前,基于.net平台技术的持续改进和发展,其开发技术和效率越来越高效。但受限于人为因素,如开发人员良莠不齐造成的代码质量、硬件维护人员的错误环境配置等,仍然导致企业管理软件在运行期间,出现产品突然停止响应,如软件卡死等,给软件使用人员带来非常糟糕的使用体验。
当软件在运行期间的停止响应时,当前的解决方法主要有如下两类:
1、通过日志分析找线索,然后再Review代码手段定位问题代码;
2、通过调试工具如visual studio工具调试。
以上两个常规方法都有很大的局限性和弊端,具体如下:
1、问题分析时间无法评估。很多情况下由于信息缺乏导致根本就不能定位到引起问题的具体代码。
2、软件环境运行在生产环境,调试时势必要影响生产环境软运行,导致用户在调试时间内不能正常使用系统,影响用户的使用体验。
发明内容
本发明的目的在于,针对上述问题,提出一种解决程序运行期间停止响应的方法和装置,以实现快速定位引发问题的具体代码的优点。
为实现上述目的,本发明采用的技术方案是:
一种解决程序运行期间停止响应的方法,包括以下步骤:
步骤101、出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;
步骤102、对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;
步骤103、对比上述步骤102多次调用栈的结果,找到程序一直正在执行的函数名称;
步骤104、对于上述步骤103找到的函数名称,通过命令找到函数的编译入口地址;
步骤105、对步骤104找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码。
优选的,步骤101具体为:通过IIS的工作进程的监控请求时间,确认是否存在长时间运行的请求操作以及请求操作的具体客户端地址、状态和停止响应时间。
优选的,步骤102具体为:使用windbg工具附加到服务进程,根据预设的间隔时间多次打印调用栈,并分别记录操作的调用栈。
优选的,所述预设的间隔时间为10秒。
优选的,步骤105通过命令设置断点并输入日志中的命令为BP命令。
同时本发明技术方案还公开一种解决程序运行期间停止响应的装置,包括,程序监测模块、程序调试模块、程序对比模块、地址寻找模块和程序运行模块;
所述程序监测模块:出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;
所述程序调试模块:对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;
所述程序对比模块:对比上述程序调试模块多次调用栈的结果,找到程序一直正在执行的函数名称;
所述地址寻找模块:对于上述程序对比模块找到的函数名称,通过命令找到函数的编译入口地址;
所述程序运行模块:对上述地址寻找模块找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码。
优选的,所述程序监测模块具体通过IIS的工作进程的监控请求时间,确认是否存在长时间运行的请求操作以及请求操作的具体客户端地址、状态和停止响应时间。
优选的,所述程序调试模块,使用windbg工具附加到服务进程,根据预设的间隔时间多次打印调用栈,并分别记录操作的调用栈。
优选的,所述预设的间隔时间为10秒。
优选的,所述程序运行模块中通过命令设置断点并输入日志中的命令为BP命令。
本发明的技术方案具有以下有益效果:
本发明的技术方案,通过寻找程序一直正在执行的函数名称,找到函数的编译入口地址,在编译入口地址处设置断点,从而达到快速定位引发问题的具体代码的目的。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明实施例所述的解决程序运行期间停止响应的方法的流程图;
图2为本发明实施例所述的解决程序运行期间停止响应的装置的原理框图;
图3为解决程序运行期间停止响应的方法中IIS的工作进程的示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
一种解决程序运行期间停止响应的方法,包括以下步骤:
步骤101、出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;
步骤102、对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;
步骤103、对比上述步骤102多次调用栈的结果,找到程序一直正在执行的函数名称;
步骤104、对于上述步骤103找到的函数名称,通过命令找到函数的编译入口地址;
步骤105、对步骤104找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码。
解决程序运行期间停止响应的方法具体如图1所示,
S 101:出现程序停止响应后,通过IIS的工作进程的监控请求时间,可以确认是否存在长时间不运行的请求操作以及请求操作的具体客户端地址、状态和经过时间(停止响应时间)。即因程序卡顿,从而一直在运行相同的操作;IIS的工作进程如图3所示。
S 102:使用windbg工具附加到服务进程,根据预设的间隔时间(默认10秒),通过命令~*e !clrstack多次打印调用栈,并分别记录下操作的调用栈;
S103:对比多次调用栈结果,找到程序一直正在执行的函数名称。如函数:Assembly.Class.FunctionA();
S104:对前面S103中找到的函数名称,通过命令!name2ee Assembly.dllAssembly.Class.FunctionA,找到函数的编译入口地址,例如:函数的编译后的JITTEDCode Address为:000007ff01593b00;
S105:对S104找到的函数编译入口地址,通过BP命令设置断点并输入日志,具体命令:Bp 000007ff01593b00 "r $t0=@$t0+1;.printf \" FunctionA executes: %d times,然后继续程序执行,看断点是否命中,从而确认问题代码。
如图2所示,一种解决程序运行期间停止响应的装置,包括,程序监测模块、程序调试模块、程序对比模块、地址寻找模块和程序运行模块;
程序监测模块:出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;
程序调试模块:对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;
程序对比模块:对比上述程序调试模块多次调用栈的结果,找到程序一直正在执行的函数名称;
地址寻找模块:对于上述程序对比模块找到的函数名称,通过命令找到函数的编译入口地址;
程序运行模块:对上述地址寻找模块找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码。
并发明技术方案中的IIS和windbg均为本领域技术人员明确的技术用语。而命令和函数中对于本领域技术人员均是明确的。
本发明技术方案适用于.net平台开发的所有软件程序。
综上所述,本发明技术方案,
通过在系统上运行插件监控装置,使得用户可以直接判断出系统问题是否有插件引起,插件执行的情况,运行的效率,影响的数据可以通过管理界面清楚的得出。使产品系统自身得到了完善,不在受困于外部插件带来的麻烦。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种解决程序运行期间停止响应的方法,其特征在于,包括以下步骤:
步骤101、出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;
步骤101具体为:通过IIS的工作进程的监控请求时间,确认是否存在长时间运行的请求操作以及请求操作的具体客户端地址、状态和停止响应时间;
步骤102、对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;
步骤103、对比上述步骤102多次调用栈的结果,找到程序一直正在执行的函数名称;
步骤104、对于上述步骤103找到的函数名称,通过命令找到函数的编译入口地址;
步骤105、对步骤104找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码;
通过在系统上运行插件监控装置,使得用户可以直接判断出系统问题是否有插件引起,插件执行的情况,运行的效率,影响的数据可以通过管理界面清楚的得出,使产品系统自身得到了完善,不在受困于外部插件带来的麻烦;
步骤102具体为:使用windbg工具附加到服务进程,根据预设的间隔时间多次打印调用栈,并分别记录操作的调用栈;
所述预设的间隔时间为10秒;
步骤105通过命令设置断点并输入日志中的命令为BP命令。
2.一种解决程序运行期间停止响应的装置,其特征在于,包括,程序监测模块、程序调试模块、程序对比模块、地址寻找模块和程序运行模块;
所述程序监测模块:出现程序停止响应后,确认是否存在长时间运行的请求操作以及该请求操作的具体客户端地址、状态和停止响应时间;所述程序监测模块具体通过IIS的工作进程的监控请求时间,确认是否存在长时间运行的请求操作以及请求操作的具体客户端地址、状态和停止响应时间;
所述程序调试模块:对程序的服务进程,根据预设的间隔时间,多次打印调用栈,并分别记录操作的调用栈;
所述程序对比模块:对比上述程序调试模块多次调用栈的结果,找到程序一直正在执行的函数名称;
所述地址寻找模块:对于上述程序对比模块找到的函数名称,通过命令找到函数的编译入口地址;
所述程序运行模块:对上述地址寻找模块找到的函数编译入口地址,通过命令设置断点并输入日志,然后继续程序执行,看断点是否命中,从而确认问题代码。
3.根据权利要求2所述的解决程序运行期间停止响应的装置,其特征在于,所述程序调试模块,使用windbg工具附加到服务进程,根据预设的间隔时间多次打印调用栈,并分别记录操作的调用栈。
4.根据权利要求3所述的解决程序运行期间停止响应的装置,其特征在于,所述预设的间隔时间为10秒。
5.根据权利要求2所述的解决程序运行期间停止响应的装置,其特征在于,所述程序运行模块中通过命令设置断点并输入日志中的命令为BP命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510768838.XA CN105260257B (zh) | 2015-11-12 | 2015-11-12 | 解决程序运行期间停止响应的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510768838.XA CN105260257B (zh) | 2015-11-12 | 2015-11-12 | 解决程序运行期间停止响应的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260257A CN105260257A (zh) | 2016-01-20 |
CN105260257B true CN105260257B (zh) | 2019-03-26 |
Family
ID=55099958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510768838.XA Active CN105260257B (zh) | 2015-11-12 | 2015-11-12 | 解决程序运行期间停止响应的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260257B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108279994B (zh) * | 2018-01-22 | 2021-04-16 | 北京仿真中心 | 一种连接Citrix已发布应用异常的自动化解决方法 |
CN110413432B (zh) * | 2019-07-02 | 2023-09-01 | Oppo广东移动通信有限公司 | 一种信息处理方法、电子设备及存储介质 |
CN111124730B (zh) * | 2019-12-20 | 2024-01-23 | 浪潮商用机器有限公司 | 一种服务器的错误定位方法、装置及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101042669A (zh) * | 2006-06-28 | 2007-09-26 | 华为技术有限公司 | 一种系统信息记录的方法及装置 |
CN101192192A (zh) * | 2006-11-21 | 2008-06-04 | 华为技术有限公司 | 用于实时操作系统的任务异常诊断方法及系统 |
CN101295280A (zh) * | 2008-06-18 | 2008-10-29 | 腾讯科技(深圳)有限公司 | 自动化软件调测方法及系统 |
-
2015
- 2015-11-12 CN CN201510768838.XA patent/CN105260257B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101042669A (zh) * | 2006-06-28 | 2007-09-26 | 华为技术有限公司 | 一种系统信息记录的方法及装置 |
CN101192192A (zh) * | 2006-11-21 | 2008-06-04 | 华为技术有限公司 | 用于实时操作系统的任务异常诊断方法及系统 |
CN101295280A (zh) * | 2008-06-18 | 2008-10-29 | 腾讯科技(深圳)有限公司 | 自动化软件调测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105260257A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102799519A (zh) | 一种集群文件系统自动化测试方法 | |
CN109669876B (zh) | 一种javascript代码的调试控制方法及系统 | |
US20080155350A1 (en) | Enabling tracing operations in clusters of servers | |
CN107241315B (zh) | 银行网关接口的接入方法、装置及计算机可读存储介质 | |
CN104765678A (zh) | 对移动终端设备上的应用进行测试的方法及装置 | |
CN104809030A (zh) | 一种基于Android的异常处理系统及处理方法 | |
CN105260257B (zh) | 解决程序运行期间停止响应的方法和装置 | |
WO2015116064A1 (en) | End user monitoring to automate issue tracking | |
CN106209503B (zh) | Rpc接口测试方法及系统 | |
CN108762966A (zh) | 系统异常拦截方法、装置、计算机设备及存储介质 | |
CN110727581B (zh) | 崩溃定位方法与电子设备 | |
CN107357731A (zh) | 进程产生core dump问题的监控、分析和处理方法 | |
CN112115038A (zh) | 一种应用测试方法、装置和存储介质 | |
CN104615523A (zh) | 一种基于ipmi协议的bmc管理模块疲劳测试方法 | |
CN108804279A (zh) | 修改日志打印等级的方法及应用设备 | |
CN108665237B (zh) | 一种基于业务系统建立自动巡检模型和定位异常的方法 | |
CN107168844B (zh) | 一种性能监控的方法及装置 | |
CN110347565B (zh) | 一种应用程序的异常分析方法及装置、电子设备 | |
CN105843675B (zh) | 线程退出方法和装置 | |
CN105630664A (zh) | 一种反向调试方法、装置及调试器 | |
US7934196B2 (en) | Software component and software component management system | |
CN106445787A (zh) | 一种监控服务器核心转储文件的方法、装置及电子设备 | |
CN102799526A (zh) | 一种分布式智能调度方法 | |
CN110209565A (zh) | 一种元数据模型调试方法及其装置 | |
CN111736893B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |