本技术涉及计算机,尤其涉及一种获取函数调用关系的方法、装置、电子设备及存储介质。
背景技术:
1、随着第五代移动通信技术(5g)的发展和应用,基站,例如5g基站所采用的软件系统也具有越来越高的复杂度,当前基站往往采用多核处理器协作并发运行多个任务。在开发产品和试运行产品的阶段,经常会出现软件异常运行的场景或者出现软件在短暂地异常运行后自动恢复正常运行的场景。因此,存在一种需求,即希望获取在多核处理器中各个处理器内核执行任务的情况。具体地,在软件异常运行前后一段时间或者任意一段时间的多个时刻,各个处理器内核在执行什么任务、执行什么函数,在执行某个任务期间处理器内核在执行什么函数,执行的过程及结果是否符合预期,会不会产生性能瓶颈。
技术实现思路
1、本技术实施例提供一种获取函数调用关系的方法、装置、电子设备及存储介质,用以解决现有技术中无法直观得到各个处理器内核所执行的函数的缺陷,实现获取在任意时刻各个处理器内核的函数调用关系。
2、第一方面,本技术实施例提供一种获取函数调用关系的方法,包括:
3、设置至少一个中断触发时刻;
4、通过触发多核处理器中处理器核心的中断,获取所述处理器核心在所述中断触发时刻的函数调用关系。
5、可选地,根据本技术一个实施例的获取函数调用关系的方法,所述至少一个中断触发时刻包括第一时刻和第二时刻;
6、其中所述第一时刻、所述第二时刻以及所述第一时刻和所述第二时刻之间的间隔可配置。
7、可选地,根据本技术一个实施例的获取函数调用关系的方法,所述多核处理器包括第一处理器核心和第二处理器核心,所述通过触发多核处理器中处理器核心的中断,获取所述处理器核心在所述中断触发时刻的函数调用关系包括:
8、分别触发第一处理器核心的中断和第二处理器核心的中断;
9、分别获取所述第一处理器核心在所述中断触发时刻的函数调用关系和所述第二处理器核心在所述中断触发时刻的函数调用关系。
10、可选地,根据本技术一个实施例的获取函数调用关系的方法,所述触发多核处理器中处理器核心的中断包括以下至少一种:
11、触发多核处理器中处理器核心的不可屏蔽中断nmi;
12、触发多核处理器中处理器核心的时钟中断。
13、可选地,根据本技术一个实施例的获取函数调用关系的方法,所述获取所述处理器核心在所述中断触发时刻的函数调用关系包括:
14、判断触发中断前运行的代码的特权级别,在所述运行的代码是用户态的情况下,将用户态的栈内存拷贝到内核态后再解析栈空间函数调用。
15、可选地,根据本技术一个实施例的获取函数调用关系的方法,所述解析栈空间函数调用包括:
16、通过解析栈帧寄存器与栈顶寄存器来得到函数地址调用链;
17、或,在不使用栈帧寄存器记录函数调用的栈帧的情况下,通过解析可执行与可链接格式elf文件中的描述如何展开堆栈的表的段来得到函数地址调用链。
18、可选地,根据本技术一个实施例的获取函数调用关系的方法,还包括:
19、建立任务信息数据库;
20、获取触发中断前运行的任务切换信息;
21、通过查找所述任务信息数据库,转换所述任务切换信息中的任务标识id为任务名称字符串。
22、可选地,根据本技术一个实施例的获取函数调用关系的方法,还包括:
23、建立函数符号数据库;
24、建立任务信息池,所述任务信息池中包括系统中所有活动的任务的信息;
25、获取所述任务信息池中所有任务的elf文件函数符号信息表和elf文件在系统中的映射表;
26、读取所述elf文件函数符号信息表和elf文件在系统中的映射表,以获取所述函数调用关系中的函数地址;
27、通过查找所述函数符号数据库,转换所述函数调用关系中的函数地址为函数名称字符串。
28、可选地,根据本技术一个实施例的获取函数调用关系的方法,还包括:
29、通过图形化用户界面显示中断触发时刻的函数调用关系。
30、第二方面,本技术实施例还提供一种电子设备,包括存储器、收发机和处理器,其中:
31、存储器,用于存储计算机程序;收发机,用于在所述处理器的控制下收发数据;处理器,用于读取所述存储器中的计算机程序并执行以下操作:
32、设置至少一个中断触发时刻;
33、通过触发多核处理器中处理器核心的中断,获取所述处理器核心在所述中断触发时刻的函数调用关系。
34、可选地,根据本技术一个实施例的电子设备,所述至少一个中断触发时刻包括第一时刻和第二时刻;
35、其中所述第一时刻、所述第二时刻以及所述第一时刻和所述第二时刻之间的间隔可配置。
36、可选地,根据本技术一个实施例的电子设备,所述多核处理器包括第一处理器核心和第二处理器核心,所述通过触发多核处理器中处理器核心的中断,获取所述处理器核心在所述中断触发时刻的函数调用关系包括:
37、分别触发第一处理器核心的中断和第二处理器核心的中断;
38、分别获取所述第一处理器核心在所述中断触发时刻的函数调用关系和所述第二处理器核心在所述中断触发时刻的函数调用关系。
39、可选地,根据本技术一个实施例的电子设备,所述触发多核处理器中处理器核心的中断包括以下至少一种:
40、触发多核处理器中处理器核心的不可屏蔽中断nmi;
41、触发多核处理器中处理器核心的时钟中断。
42、可选地,根据本技术一个实施例的电子设备,所述获取所述处理器核心在所述中断触发时刻的函数调用关系包括:
43、判断触发中断前运行的代码的特权级别,在所述运行的代码是用户态的情况下,将用户态的栈内存拷贝到内核态后再解析栈空间函数调用。
44、可选地,根据本技术一个实施例的电子设备,所述解析栈空间函数调用包括:
45、通过解析栈帧寄存器与栈顶寄存器来得到函数地址调用链;
46、或,在不使用栈帧寄存器记录函数调用的栈帧的情况下,通过解析可执行与可链接格式elf文件中的描述如何展开堆栈的表的段来得到函数地址调用链。
47、可选地,根据本技术一个实施例的电子设备,所述处理器还用于读取所述存储器中的计算机程序并执行以下操作:
48、建立任务信息数据库;
49、获取触发中断前运行的任务切换信息;
50、通过查找所述任务信息数据库,转换所述任务切换信息中的任务标识id为任务名称字符串。
51、可选地,根据本技术一个实施例的电子设备,所述处理器还用于读取所述存储器中的计算机程序并执行以下操作:
52、建立函数符号数据库;
53、建立任务信息池,所述任务信息池中包括系统中所有活动的任务的信息;
54、获取所述任务信息池中所有任务的elf文件函数符号信息表和elf文件在系统中的映射表;
55、读取所述elf文件函数符号信息表和elf文件在系统中的映射表,以获取所述函数调用关系中的函数地址;
56、通过查找所述函数符号数据库,转换所述函数调用关系中的函数地址为函数名称字符串。
57、可选地,根据本技术一个实施例的电子设备,所述处理器还用于读取所述存储器中的计算机程序并执行以下操作:
58、通过图形化用户界面显示中断触发时刻的函数调用关系。
59、第三方面,本技术实施例还提供一种获取函数调用关系的装置,包括:
60、时刻设置单元,用于设置至少一个中断触发时刻;
61、函数调用关系获取单元,用于通过触发多核处理器中处理器核心的中断,获取所述处理器核心在所述中断触发时刻的函数调用关系。
62、第四方面,本技术实施例还提供一种处理器可读存储介质,所述处理器可读存储介质存储有计算机程序,所述计算机程序用于使所述处理器执行如第一方面所述的获取函数调用关系的方法。
63、本技术实施例提供的获取函数调用关系的方法、装置、电子设备及存储介质,通过设置中断触发时刻,从而能够设置获取函数调用关系的时刻,通过触发中断来获取函数调用关系,实现了获取任意时刻各个处理器内核的函数调用关系。