1.一种堆栈获取方法,其特征在于,所述方法包括:
当程序的本地框架层发生异常时,创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的程序计数器PC寄存器中,所述指定函数用于获取所述程序在虚拟机语言层的堆栈;
通过所述目标堆栈和所述PC寄存器继续运行所述程序,以获取所述程序在所述虚拟机语言层的堆栈。
2.如权利要求1所述的方法,其特征在于,所述创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的PC寄存器中之前,还包括:
判断所述程序是否处于指定程序状态,所述指定程序状态用于指示已获取所述程序在所述虚拟机语言层的堆栈;
当所述程序未处于指定程序状态时,执行所述创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的PC寄存器中的步骤。
3.如权利要求1所述的方法,其特征在于,所述将指定函数在所述程序对应的内存空间中的地址存放到所述程序的PC寄存器中之前,还包括:
从所述程序对应的内存空间中,查找所述指定函数;
当查找到所述指定函数时,获取所述指定函数在所述程序对应的内存空间中的地址。
4.如权利要求1所述的方法,其特征在于,所述通过所述目标堆栈和所述PC寄存器继续运行所述程序,以获取所述程序在所述虚拟机语言层的堆栈,包括:
通过所述目标堆栈和所述PC寄存器继续运行所述程序,并在继续运行所述程序的过程中,根据所述PC寄存器中存放的所述指定函数在所述程序对应的内存空间中的地址,从所述程序对应的内存空间中,获取所述指定函数;
通过执行所述指定函数,来获取所述程序在所述虚拟机语言层的堆栈。
5.如权利要求1-4任一权利要求所述的方法,其特征在于,所述通过所述目标堆栈和所述PC寄存器继续运行所述程序,以获取所述程序在所述虚拟机语言层的堆栈之后,还包括:
将预设地址存放到所述PC寄存器中;
在继续运行所述程序的过程中,通过所述PC寄存器中存放的所述预设地址,来触发对所述程序的异常处理。
6.如权利要求1所述的方法,其特征在于,所述当程序的本地框架层发生异常时,创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的PC寄存器中之前,还包括:
当检测到所述本地框架层产生异常信号时,确定所述本地框架层发生异常。
7.一种堆栈获取装置,其特征在于,所述装置包括:
创建模块,用于当程序的本地框架层发生异常时,创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的程序计数器PC寄存器中,所述指定函数用于获取所述程序在虚拟机语言层的堆栈;
运行模块,用于通过所述目标堆栈和所述PC寄存器继续运行所述程序,以获取所述程序在所述虚拟机语言层的堆栈。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
判断模块,用于判断所述程序是否处于指定程序状态,所述指定程序状态用于指示已获取所述程序在所述虚拟机语言层的堆栈;
第一触发模块,用于当所述程序未处于指定程序状态时,触发所述创建模块创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的PC寄存器中。
9.如权利要求7所述的装置,其特征在于,所述装置还包括:
查找模块,用于从所述程序对应的内存空间中,查找所述指定函数;
获取模块,用于当查找到所述指定函数时,获取所述指定函数在所述程序对应的内存空间中的地址。
10.如权利要求7所述的装置,其特征在于,所述运行模块包括:
第一获取子模块,用于通过所述目标堆栈和所述PC寄存器继续运行所述程序,并在继续运行所述程序的过程中,根据所述PC寄存器中存放的所述指定函数在所述程序对应的内存空间中的地址,从所述程序对应的内存空间中,获取所述指定函数;
第二获取子模块,用于通过执行所述指定函数,来获取所述程序在所述虚拟机语言层的堆栈。
11.如权利要求7-10任一权利要求所述的装置,其特征在于,所述装置还包括:
存放模块,用于将预设地址存放到所述PC寄存器中;
第二触发模块,用于在继续运行所述程序的过程中,通过所述PC寄存器中存放的所述预设地址,来触发对所述程序的异常处理。
12.如权利要求7所述的装置,其特征在于,所述装置还包括:
检测模块,用于当检测到所述本地框架层产生异常信号时,确定所述本地框架层发生异常。
13.一种堆栈获取装置,其特征在于,所述装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
当程序的本地框架层发生异常时,创建目标堆栈,并将指定函数在所述程序对应的内存空间中的地址存放到所述程序的程序计数器PC寄存器中,所述指定函数用于获取所述程序在虚拟机语言层的堆栈;
通过所述目标堆栈和所述PC寄存器继续运行所述程序,以获取所述程序在所述虚拟机语言层的堆栈。