技术特征:
1.一种基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,包括:
当满足预设的应用程序backtrace的打印条件时,获取运行状态信息;其中,所述运行状态信息包括:发生问题的当前函数在cpu的寄存器中的栈指针、指令指针及返回地址;
对所述运行状态信息进行解析,计算得到当前函数的返回地址和所述当前函数的上一层调用函数的栈地址;
将当前获得的函数的返回地址作为上一层调用函数的运行地址并基于当前获得的调用函数的栈地址,解析所述函数的上一层调用函数的返回地址和上上一层调用函数的栈地址,直到解析出每层调用函数的运行地址;
根据每层调用函数的运行地址,解析得到每层调用函数的函数名称。
2.如权利要求1所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,所述打印条件包括所述应用程序发生问题。
3.如权利要求2所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,
在所述当满足预设的应用程序backtrace的打印条件时,获取运行状态信息之前,还包括:
在加载linux内核模块时,往linux内核模块中注册钩子函数;
则,所述对所述运行状态信息进行解析,计算得到当前函数的返回地址和所述当前函数的上一层调用函数的栈地址,包括:
通过所述linux内核模块将所述运行状态信息传递给所述钩子函数,并通过所述钩子函数对所述运行状态信息进行解析,计算得到当前函数的返回地址和所述当前函数的上一层调用函数的栈地址。
4.如权利要求2所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,
在所述当满足预设的应用程序backtrace的打印条件时,获取运行状态信息之前,还包括:
在加载linux内核模块时,在/proc目录下创建文件;
则,所述当满足预设的应用程序backtrace的打印条件时,获取运行状态信息,包括:
当满足预设的应用程序backtrace的打印条件时,根据所述文件中用户预先写入的所述应用程序的pid,获取运行状态信息。
5.如权利要求3或4所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,每层调用函数的运行地址的解析是通过所述linux内核模块来进行的。
6.如权利要求2所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于:
在所述当所述应用程序发生问题时,获取运行状态信息之前,还包括:
在main函数中调用linux共享库的使能接口,向linux系统中注册需要捕获的信号;
则,所述当满足预设的应用程序backtrace的打印条件时,获取运行状态信息,包括:
当满足预设的应用程序backtrace的打印条件时,通过所述linux共享库捕获到所述信号,并通过所述linux共享库的信号处理函数从上下文环境中获取所述运行状态信息。
7.如权利要求1所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,
所述满足预设的应用程序backtrace的打印条件时,获取运行状态信息,包括:
当通过所述linux共享库捕获到用户输入的backtrace打印指令时,通过所述linux共享库的信号处理函数从上下文环境中获取所述运行状态信息。
8.如权利要求6或7所述的基于mips平台打印嵌入式linux应用程序backtrace的方法,其特征在于,每层调用函数的运行地址的解析是通过所述linux共享库来进行的。
9.一种基于mips平台打印嵌入式linux应用程序backtrace的装置,其特征在于,包括:
信息获取模块,用于当满足预设的应用程序backtrace的打印条件时,获取运行状态信息;其中,所述运行状态信息包括:发生问题的当前函数在cpu的寄存器中的栈指针、指令指针及返回地址;
解析计算模块,用于对所述运行状态信息进行解析,计算得到当前函数的返回地址和所述当前函数的上一层调用函数的栈地址;
运行地址解析模块,用于将当前获得的函数的返回地址作为上一层调用函数的运行地址并基于当前获得的调用函数的栈地址,解析所述函数的上一层调用函数的返回地址和上上一层调用函数的栈地址,直到解析出每层调用函数的运行地址;
函数名称解析模块,用于根据每层调用函数的运行地址,解析得到每层调用函数的函数名称。
10.一种基于mips平台打印嵌入式linux应用程序backtrace的设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至8中任意一项所述的基于mips平台打印嵌入式linux应用程序backtrace的方法。