CN105824749A - 一种linux系统下用户态进程异常的分析方法 - Google Patents

一种linux系统下用户态进程异常的分析方法 Download PDF

Info

Publication number
CN105824749A
CN105824749A CN201610131609.1A CN201610131609A CN105824749A CN 105824749 A CN105824749 A CN 105824749A CN 201610131609 A CN201610131609 A CN 201610131609A CN 105824749 A CN105824749 A CN 105824749A
Authority
CN
China
Prior art keywords
abnormal
analysis method
linux system
analysis
user space
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.)
Granted
Application number
CN201610131609.1A
Other languages
English (en)
Other versions
CN105824749B (zh
Inventor
王仁雷
苟利平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Original Assignee
SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHANGHAI BAUD DATA COMMUNICATION CO Ltd filed Critical SHANGHAI BAUD DATA COMMUNICATION CO Ltd
Priority to CN201610131609.1A priority Critical patent/CN105824749B/zh
Publication of CN105824749A publication Critical patent/CN105824749A/zh
Application granted granted Critical
Publication of CN105824749B publication Critical patent/CN105824749B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime

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)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种linux系统下用户态进程异常的分析方法,本方法通过进程自身接管特定的信号获取异常时的任务上下文并按体系结构解析任务堆栈实现了对异常的分析。本方案能够协助软件开发人员快速准确定位并解决软件BUG。

Description

一种linux系统下用户态进程异常的分析方法
技术领域
本发明涉及软件系统技术,具体涉及软件系统中调试分析技术。
背景技术
现有的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系统都能变通实现,其原理都如上所述,此处不加以赘述。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (7)

1.一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析方法通过进程自身来进行异常分析。
2.根据权利要求1所述的一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析方法通过在进程自身增加异常分析功能,由进程本身进行解析异常原因。
3.根据权利要求2所述的一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析方法中通过进程自身接管特定的信号来获取异常时的任务上下文,并按体系结构解析任务堆栈,实现对异常的分析。
4.根据权利要求3所述的一种linux系统下用户态进程异常的分析方法,其特征在于,所述分析方法具体包括如下步骤:
(1)进程启动后接管要进行异常分析的信号,并重新设置信号处理程序;
(2)当接管的信号发生时,系统将自动调用之前设置的信号处理程序,即跳到步骤(3);
(3)获取异常类型、异常线程的名称,按CPU的体系结构获取异常时CPU寄存器上下文;
(4)根据异常时CPU的寄存器获取任务堆栈信息;
(5)根据异常时CPU的寄存器、任务堆栈信息分析得到异常指令、异常函数及异常函数的调用关系;
(6)输出解析后的异常信息;
(7)记录解析后的异常信息。
5.根据权利要求4所述的一种linux系统下用户态进程异常的分析方法,其特征在于,所述步骤(3)中CPU的体系结构为MIPS。
6.根据权利要求4所述的一种linux系统下用户态进程异常的分析方法,其特征在于,所述步骤(6)中通过IO系统输出解析后的异常信息。
7.根据权利要求4所述的一种linux系统下用户态进程异常的分析方法,其特征在于,所述步骤(7)中通过日志系统记录解析后的异常信息。
CN201610131609.1A 2016-03-09 2016-03-09 一种linux系统下用户态进程异常的分析方法 Active CN105824749B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610131609.1A CN105824749B (zh) 2016-03-09 2016-03-09 一种linux系统下用户态进程异常的分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610131609.1A CN105824749B (zh) 2016-03-09 2016-03-09 一种linux系统下用户态进程异常的分析方法

Publications (2)

Publication Number Publication Date
CN105824749A true CN105824749A (zh) 2016-08-03
CN105824749B CN105824749B (zh) 2019-06-25

Family

ID=56987027

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610131609.1A Active CN105824749B (zh) 2016-03-09 2016-03-09 一种linux系统下用户态进程异常的分析方法

Country Status (1)

Country Link
CN (1) CN105824749B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109614290A (zh) * 2018-12-10 2019-04-12 苏州思必驰信息科技有限公司 容器中的进程异常信息记录方法及系统
CN109947636A (zh) * 2017-12-20 2019-06-28 浙江宇视科技有限公司 异常线程定位方法及装置
CN110764995A (zh) * 2019-09-05 2020-02-07 北京字节跳动网络技术有限公司 一种检测文件访问异常的方法、装置、介质和电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996257A (zh) * 2006-12-26 2007-07-11 华为技术有限公司 对进程进行监控的方法和系统
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN101261603A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 故障定位的方法和装置
CN101539883A (zh) * 2009-05-05 2009-09-23 北京和利时系统工程有限公司 嵌入式系统的错误追踪方法和装置
CN101593147A (zh) * 2009-04-15 2009-12-02 卡斯柯信号有限公司 基于符号文件的异常信息转储方法
CN103092746A (zh) * 2013-02-05 2013-05-08 上海大唐移动通信设备有限公司 线程异常的定位方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1996257A (zh) * 2006-12-26 2007-07-11 华为技术有限公司 对进程进行监控的方法和系统
CN101211309A (zh) * 2006-12-29 2008-07-02 中兴通讯股份有限公司 嵌入式系统中进程异常跟踪定位的方法
CN101261603A (zh) * 2008-04-09 2008-09-10 中兴通讯股份有限公司 故障定位的方法和装置
CN101593147A (zh) * 2009-04-15 2009-12-02 卡斯柯信号有限公司 基于符号文件的异常信息转储方法
CN101539883A (zh) * 2009-05-05 2009-09-23 北京和利时系统工程有限公司 嵌入式系统的错误追踪方法和装置
CN103092746A (zh) * 2013-02-05 2013-05-08 上海大唐移动通信设备有限公司 线程异常的定位方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CLOVER_TOEIC: "嵌入式系统C编程之堆栈回溯", 《HTTPS://WWW.CNBLOGS.COM/CLOVER-TOEIC/P/3949896.HTML》 *
VICYLIU1984: "信号及信号处理Signal&Signal process", 《HTTP://VICYLIU1984.BLOG.163.COM/BLOG/STATIC/31541232201092710402766/》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109947636A (zh) * 2017-12-20 2019-06-28 浙江宇视科技有限公司 异常线程定位方法及装置
CN109614290A (zh) * 2018-12-10 2019-04-12 苏州思必驰信息科技有限公司 容器中的进程异常信息记录方法及系统
CN110764995A (zh) * 2019-09-05 2020-02-07 北京字节跳动网络技术有限公司 一种检测文件访问异常的方法、装置、介质和电子设备
CN110764995B (zh) * 2019-09-05 2023-06-06 北京字节跳动网络技术有限公司 一种检测文件访问异常的方法、装置、介质和电子设备

Also Published As

Publication number Publication date
CN105824749B (zh) 2019-06-25

Similar Documents

Publication Publication Date Title
CN106919612B (zh) 一种上线结构化查询语言脚本的处理方法及装置
US20070079288A1 (en) System and method for capturing filtered execution history of executable program code
CN101944059A (zh) 计算机软件崩溃信息的自动分析方法和装置
US9454467B2 (en) Method and apparatus for mining test coverage data
CN104375910A (zh) 一种自动化开关机测试方法
CN106598871A (zh) Linux下的崩溃文件自动化分析方法及系统
US20150293898A1 (en) Method and apparatus for word detection in application program
CN105824749A (zh) 一种linux系统下用户态进程异常的分析方法
CN109255240B (zh) 一种漏洞处理方法和装置
CN107220175B (zh) 应用程序死循环定位方法、装置、计算机设备和存储介质
CN108519925A (zh) 一种iOS闪退保护策略
JP2010067188A (ja) プログラミングを支援するための情報処理装置、情報処理システム、プログラミング支援方法およびプログラム
CN115357515B (zh) 一种多核系统的调试方法、装置、计算机设备及存储介质
CN104461679A (zh) 一种将网卡绑定到cpu的自动化实现方法
US20190354468A1 (en) Code coverage module with testing function identifier
CN111752586A (zh) 跨架构的嵌入式设备固件未修补漏洞检测方法及系统
US20160112285A1 (en) Apparatus and method for detecting abnormal connection
CN108121651A (zh) 计算机软件崩溃信息的自动分析方法和装置
US20120151274A1 (en) Client-Side Application Script Error Processing
EP3570173B1 (en) Equivalence verification apparatus and equivalence verification program
Elsner et al. Challenges in regression test selection for end-to-end testing of microservice-based software systems
CN108132799B (zh) 过程间静态程序分析信息提取方法、装置及设备
CN114510429B (zh) 一种基于动态符号执行的调试方法、系统和介质
Eichelberger et al. From reproducibility problems to improvements: a journey
US20120054723A1 (en) Dynamic instrumentation method and apparatus thereof

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20160803

Assignee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Assignor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Contract record no.: X2020980003092

Denomination of invention: Method for analyzing abnormality of user-mode progress under linux system

Granted publication date: 20190625

License type: Exclusive License

Record date: 20200615

EE01 Entry into force of recordation of patent licensing contract
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Method for analyzing abnormality of user-mode progress under linux system

Effective date of registration: 20200615

Granted publication date: 20190625

Pledgee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Pledgor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Registration number: Y2020980003093

EC01 Cancellation of recordation of patent licensing contract
EC01 Cancellation of recordation of patent licensing contract

Assignee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Assignor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Contract record no.: X2020980003092

Date of cancellation: 20210809

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20210809

Granted publication date: 20190625

Pledgee: Shanghai Puchuang Longke Finance Leasing Co.,Ltd.

Pledgor: SHANGHAI BAUD DATA COMMUNICATION Co.,Ltd.

Registration number: Y2020980003093