本发明专利技术公开了一种linux系统下用户态进程异常的分析方法,本方法通过进程自身接管特定的信号获取异常时的任务上下文并按体系结构解析任务堆栈实现了对异常的分析。本方案能够协助软件开发人员快速准确定位并解决软件BUG。
【技术实现步骤摘要】
本专利技术涉及软件系统技术,具体涉及软件系统中调试分析技术。
技术介绍
现有的gdb调试技术已经有截获异常并分析包括进程函数调用关系在内的多数调试信息的能力。但在实际使用和测试过程中不可能开着gdb运行,如果这时程序出BUG,开发人员就并不清楚具体发生了什么错误,这会导致解决BUG的时间被延迟,影响开发人员调试工作效率,如果BUG不易复现,则情况会变得更加严重。由此可见,提供一种准确高效的BUG定位技术是本领域亟需解决的问题。
技术实现思路
本专利技术针对现有linux应用软件开发中BUG调试过程长,影响软件开发人员调试工作效率的问题,而提供一种准确、高效的BUG定位方案,能极大的降低软件开发的调试难度,显著提高软件BUG解决效率。为了达到上述目的,本专利技术采用如下的技术方案:一种linux系统下用户态进程异常的分析方法,所述分析方法通过进程自身来进行异常分析。优选的,所述分析方法通过在进程自身增加异常分析功能,由进程本身进行解析异常原因。优选的,所述分析方法中通过进程自身接管特定的信号来获取异常时的任务上下文,并按体系结构解析任务堆栈,实现对异常的分析。优选的,所述分析方法具体包括如下步骤:(1)进程启动后接管要进行异常分析的信号,并重新设置信号处理程序;(2)当接管的信号发生时,系统将自动调用之前设置的信号处理程序,即跳到步骤(3);(3)获取异常类型、异常线程的名称,按CPU的体系结构获取异常时CPU寄存器上下文;(4)根据异常时CPU的寄存器获取任务堆栈信息;(5)根据异常时CPU的寄存器、任务堆栈信息分析得到异常指令、异常函数及异常函数的调用关系;(6)输出解析后的异常信息;(7)记录解析后的异常信息。优选的,所述步骤(3)中CPU的体系结构为MIPS。优选的,所述步骤(6)中通过IO系统输出解析后的异常信息。优选的,所述步骤(7)中通过日志系统记录解析后的异常信息。本专利技术通过给进程自身增加异常分析功能,使进程本身具有解析异常原因的能力,辅助开发人员调试和解决问题,从而提供一种准确高效的BUG定位手段,能极大的降低软件开发的调试难度,显著提高软件BUG解决效率。附图说明以下结合附图和具体实施方式来进一步说明本专利技术。图1为本专利技术实施中获取异常函数调用关系的流程图。具体实施方式为了使本专利技术实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本专利技术。本实例以MIPS处理器运行linux多线程系统为例进一步说明本专利技术方案具体的实施过程,具体实施步骤如下:1.进程启动后接管要进行异常分析的信号:SIGILL、SIGBUS、SIGFPE、SIGSEGV、SIGIO信号,并重新设置信号处理程序;2.当上述信号发生时,系统会自动调用之前设置的信号处理程序,即跳到步骤(3);3.获取异常类型、异常线程的名称,按CPU的体系结构获取异常时CPU寄存器上下文:入参1为信号类型,通过gettid获取线程id,入参3中获取异常时MIPS寄存器上下文,其格式如下所示:4.以sc_regs[29]为栈顶获取任务堆栈信息;5.sc_pc为异常指令,查找符号表可获取异常函数,再根据MIPS寄存器上下文、任务堆栈信息分析得到异常函数的调用关系,具体过程如下(参见图1):51.从寄存器上下文的sc_pc获取pc;52.从寄存器上下文的sc_regs[29]获取本级栈帧;53.判断获取的pc是否合法:若合法,转入步骤(54),若不符合,结束本次分析;54.按pc查找符号表,再把pc指向对应的函数入口;55.分析pc处的指令是否为分配本级栈帧指令:若不是(即为叶子函数),转入步骤(56);若是(即为非叶子函数),则转入步骤(58);56.确定上级栈帧即为本级栈帧;57.从寄存器上下文的sc_regs[31]获取ra,并执行步骤(61);58.计算获取上级栈帧pc指向下条指令;59.分析pc处的指令是否为ra入栈指令:若不是且分支不可达,则结束本次分析;若是,则转入步骤(60);60.获取ra;61.pc指向ra继续分析上级栈帧,并转入步骤(53);6.通过printf()函数输出解析后的异常信息;7.在非易失性随机访问存储器中记录解析后的异常信息,用于以后查看异常信息。通过上述实例可知,通过进程自身接管特定的信号来获取异常时的任务上下文,并按体系结构解析任务堆栈,实现对异常的分析,能够快速、准确的定位软件BUG。本实例方案适用于辅助开发人员在MIPS体系结构的linux系统中调试BUG。再者,基于上述实例方案,所有体系结构的CPU及类unix系统都能变通实现,其原理都如上所述,此处不加以赘述。以上显示和描述了本专利技术的基本原理、主要特征和本专利技术的优点。本行业的技术人员应该了解,本专利技术不受上述实施例的限制,上述实施例和说明书中描述的只是说明本专利技术的原理,在不脱离本专利技术精神和范围的前提下,本专利技术还会有各种变化和改进,这些变化和改进都落入要求保护的本专利技术范围内。本专利技术要求保护范围由所附的权利要求书及其等效物界定。本文档来自技高网...
【技术保护点】
一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析方法通过进程自身来进行异常分析。
【技术特征摘要】
1.一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析
方法通过进程自身来进行异常分析。
2.根据权利要求1所述的一种linux系统下用户态进程异常的分析方法,
其特征在于,所述分析方法通过在进程自身增加异常分析功能,由进程本身进
行解析异常原因。
3.根据权利要求2所述的一种linux系统下用户态进程异常的分析方法,
其特征在于,所述分析方法中通过进程自身接管特定的信号来获取异常时的任
务上下文,并按体系结构解析任务堆栈,实现对异常的分析。
4.根据权利要求3所述的一种linux系统下用户态进程异常的分析方法,
其特征在于,所述分析方法具体包括如下步骤:
(1)进程启动后接管要进行异常分析的信号,并重新设置信号处理程序;
(2)当接管的信号发生时,系统将自动调用之前设置的信号处理程序,
即跳到...
【专利技术属性】
技术研发人员:王仁雷,苟利平,
申请(专利权)人:上海博达数据通信有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。