反汇编信息输出方法、装置、电子设备及存储介质与流程

文档序号:36264404发布日期:2023-12-06 05:23阅读:26来源:国知局
反汇编信息输出方法与流程

本技术涉及计算机,特别是涉及一种反汇编信息输出方法、装置、电子设备及存储介质。


背景技术:

1、编译器可以在调试版本(debug)模式或发布版本(release)模式下编译和运行应用程序。debug模式下编译的结果通常包含有调试信息,没有对程序做任何优化,方便开发人员进行调试,release模式下不会携带调试信息,同时编译器对程序进行优化,发布给用户使用,所生成的汇编指令序列相较于debug模式可能发生变化。

2、在某些场景下,技术人员开发的应用程序在使用debug模式的编译器运行时没有错误,而该应用程序在使用release模式的编译器运行时则会暴露出错误,即有些隐藏缺陷是编译器在release模式下运行程序才会被暴露出来。

3、但是,对于编译器在release模式下运行应用程序时的错误,由于缺少调试信息,技术人员无法对错误进行回溯分析,存在错误调试定位困难的问题。


技术实现思路

1、鉴于上述问题,本技术提出了一种反汇编信息输出方法、装置、电子设备及存储介质,以便解决编译器在发布版本模式下运行应用程序时存在错误调试定位困难的问题。

2、第一方面,本技术实施例提供了一种反汇编信息输出方法,该方法包括以下步骤:

3、在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中;其中,所述汇编指令序列是通过对所述目标程序优化后得到的;

4、确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息;

5、输出所述反汇编信息。

6、可选的,所述调试信息存储单元为即时编译器中的指令调试结构体,

7、所述将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中,包括:

8、将所述汇编指令序列对应的指令调试信息存储在所述指令调试结构体中。

9、可选的,所述即时编译器还包括指令描述结构体,所述指令描述结构体包括指针,所述指针指向所述指令调试结构体;所述将所述汇编指令序列对应的指令调试信息存储在所述指令调试结构体中,包括:

10、基于所述指令描述结构体中的所述指针,将所述指令调试信息存储在所述指令调试结构体中。

11、可选的,所述即时编译器还包括全局计数器,所述全局计数器用于在运行所述目标程序生成所述汇编指令序列时,对所述即时编译器使用的编译函数进行计数,所述输出所述反汇编信息,包括:

12、输出所述反汇编信息,并输出所述全局计数器的当前值,所述全局计数器的当前值表征所述即时编译器本次运行所述目标程序使用的编译函数的数量。

13、可选的,所述在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中之前,所述方法还包括:

14、对所述全局计数器进行初始化;

15、所述在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中,包括:

16、对于任一目标编译函数,基于所述即时编译器获取所述目标编译函数,并根据所述目标编译函数对所述目标程序进行优化,得到优化结果,以及更新所述全局计数器;

17、在根据各所述目标编译函数对应的优化结果生成所述汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在所述调试信息存储单元中。

18、可选的,所述确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息,包括:

19、确定所述汇编指令序列中的各目标指令组;

20、对于任一所述目标指令组,确定所述目标指令组中的各目标指令对应的机器码;

21、根据所述指令调试信息对各所述目标指令对应的机器码进行反汇编,得到各所述目标指令对应的反汇编信息。

22、可选的,所述根据所述指令调试信息对各所述目标指令对应的机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息,包括:

23、对于任一所述目标指令,从所述调试信息存储单元中获取所述目标指令对应的目标指令调试信息;

24、根据所述目标指令调试信息对所述目标指令对应的机器码进行反汇编,得到所述目标指令对应的反汇编信息。

25、第二方面,本技术实施例提供了一种反汇编信息输出装置,该装置包括:

26、存储模块,用于在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中;其中,所述汇编指令序列是通过对所述目标程序优化后得到的;

27、反汇编模块,用于确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息;

28、输出模块,用于输出所述反汇编信息。

29、可选的,所述调试信息存储单元为即时编译器中的指令调试结构体,所述存储模块具体用于:将所述汇编指令序列对应的指令调试信息存储在所述指令调试结构体中。

30、可选的,所述即时编译器还包括指令描述结构体,所述指令描述结构体包括指针,所述指针指向所述指令调试结构体;所述存储模块具体还用于:

31、基于所述指令描述结构体中的所述指针将所述指令调试信息存储在所述指令调试结构体中。

32、可选的,所述即时编译器还包括全局计数器,所述全局计数器用于在运行所述目标程序生成所述汇编指令序列时,对所述即时编译器使用的编译函数进行计数,所述输出模块具体用于:输出所述反汇编信息,并输出所述全局计数器的当前值,所述全局计数器的当前值表征所述即时编译器本次运行所述目标程序使用的编译函数的数量。

33、可选的,所述装置还包括:

34、初始化模块,用于所述存储模块在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中之前,对所述全局计数器进行初始化;

35、所述存储模块具体还用于:

36、对于任一目标编译函数,基于所述即时编译器获取所述目标编译函数,并根据所述目标编译函数对所述目标程序进行优化,得到优化结果,以及更新所述全局计数器;

37、在根据各所述目标编译函数对应的优化结果生成所述汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在所述调试信息存储单元中。

38、可选的,所述反汇编模块具体用于:

39、确定所述汇编指令序列中的各目标指令组;

40、对于任一所述目标指令组,确定所述目标指令组中的各目标指令对应的机器码;

41、根据所述指令调试信息对各所述目标指令对应的机器码进行反汇编,得到各所述目标指令对应的反汇编信息。

42、可选的,反汇编模块具体还用于:

43、对于任一所述目标指令,从所述调试信息存储单元中获取所述目标指令对应的目标指令调试信息;

44、根据所述目标指令调试信息对所述目标指令对应的机器码进行反汇编,得到所述目标指令对应的反汇编信息。

45、第三方面,本技术实施例提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

46、存储器,用于存放计算机程序;

47、处理器,用于执行存储器上所存放的程序时,实现如第一方面所述的反汇编信息输出方法。

48、第四方面,本技术实施例提供一种存储介质,所述存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的反汇编信息输出方法。

49、本技术实施例提供的技术方案可以包括以下有益效果:

50、由于汇编指令序列是通过对目标程序优化后得到的,因此汇编指令序列为目标程序经过编译器编译和优化后的汇编指令序列,编译器为发布版本模式,在运行目标程序生成汇编指令序列时,通过将汇编指令对应的指令调试信息存储在预设的调试信息存储单元中,确定汇编指令序列对应的机器码,并根据指令调试信息对机器码进行反汇编,得到汇编指令序列对应的反汇编信息,因此,反汇编信息包括指令调试信息对应的内容,然后输出反汇编信息。这样,可以方便技术人员在程序产生错误时,根据反汇编信息对程序错误进行分析,降低错误定位和调试的难度,从而提高调试效率。

51、上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其他目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1