反汇编信息输出方法技术

技术编号:39646685 阅读:5 留言:0更新日期:2023-12-09 11:14
本申请提供了一种反汇编信息输出方法

【技术实现步骤摘要】
反汇编信息输出方法、装置、电子设备及存储介质


[0001]本申请涉及计算机
,特别是涉及一种反汇编信息输出方法

装置

电子设备及存储介质


技术介绍

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

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

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


技术实现思路

[0005]鉴于上述问题,本申请提出了一种反汇编信息输出方法

装置

电子设备及存储介质,以便解决编译器在发布版本模式下运行应用程序时存在错误调试定位困难的问题

[0006]第一方面,本申请实施例提供了一种反汇编信息输出方法,该方法包括以下步骤:
[0007]在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中;其中,所述汇编指令序列是通过对所述目标程序优化后得到的;
[0008]确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息;
[0009]输出所述反汇编信息

[0010]可选的,所述调试信息存储单元为即时编译器中的指令调试结构体,
[0011]所述将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中,包括:
[0012]将所述汇编指令序列对应的指令调试信息存储在所述指令调试结构体中

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

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

[0017]可选的,所述在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中之前,所述方法还包括:
[0018]对所述全局计数器进行初始化;
[0019]所述在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中,包括:
[0020]对于任一目标编译函数,基于所述即时编译器获取所述目标编译函数,并根据所述目标编译函数对所述目标程序进行优化,得到优化结果,以及更新所述全局计数器;
[0021]在根据各所述目标编译函数对应的优化结果生成所述汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在所述调试信息存储单元中

[0022]可选的,所述确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息,包括:
[0023]确定所述汇编指令序列中的各目标指令组;
[0024]对于任一所述目标指令组,确定所述目标指令组中的各目标指令对应的机器码;
[0025]根据所述指令调试信息对各所述目标指令对应的机器码进行反汇编,得到各所述目标指令对应的反汇编信息

[0026]可选的,所述根据所述指令调试信息对各所述目标指令对应的机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息,包括:
[0027]对于任一所述目标指令,从所述调试信息存储单元中获取所述目标指令对应的目标指令调试信息;
[0028]根据所述目标指令调试信息对所述目标指令对应的机器码进行反汇编,得到所述目标指令对应的反汇编信息

[0029]第二方面,本申请实施例提供了一种反汇编信息输出装置,该装置包括:
[0030]存储模块,用于在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中;其中,所述汇编指令序列是通过对所述目标程序优化后得到的;
[0031]反汇编模块,用于确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息;
[0032]输出模块,用于输出所述反汇编信息

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

[0034]可选的,所述即时编译器还包括指令描述结构体,所述指令描述结构体包括指针,所述指针指向所述指令调试结构体;所述存储模块具体还用于:
[0035]基于所述指令描述结构体中的所述指针将所述指令调试信息存储在所述指令调试结构体中

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

[0037]可选的,所述装置还包括:
[0038]初始化模块,用于所述存储模块在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中之前,对所述全局计数器进行初始化;
[0039]所述存储模块具体还用于:
[0040]对于任一目标编译函数,基于所述即时编译器获取所述目标编译函数,并根据所述目标编译函数对所述目标程序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种反汇编信息输出方法,其特征在于,所述方法包括:在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中;其中,所述汇编指令序列是通过对所述目标程序优化后得到的;确定所述汇编指令序列对应的机器码,并根据所述指令调试信息对所述机器码进行反汇编,得到所述汇编指令序列对应的反汇编信息;输出所述反汇编信息
。2.
根据权利要求1所述的方法,其特征在于,所述调试信息存储单元为即时编译器中的指令调试结构体,所述将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中,包括:将所述汇编指令序列对应的指令调试信息存储在所述指令调试结构体中
。3.
根据权利要求2所述的方法,其特征在于,所述即时编译器还包括指令描述结构体,所述指令描述结构体包括指针,所述指针指向所述指令调试结构体;所述将所述汇编指令序列对应的指令调试信息存储在所述指令调试结构体中,包括:基于所述指令描述结构体中的所述指针,将所述指令调试信息存储在所述指令调试结构体中
。4.
根据权利要求2所述的方法,其特征在于,所述即时编译器还包括全局计数器,所述全局计数器用于在运行所述目标程序生成所述汇编指令序列时,对所述即时编译器使用的编译函数进行计数,所述输出所述反汇编信息,包括:输出所述反汇编信息,并输出所述全局计数器的当前值,所述全局计数器的当前值表征所述即时编译器本次运行所述目标程序使用的编译函数的数量
。5.
根据权利要求4所述的方法,其特征在于,所述在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中之前,所述方法还包括:对所述全局计数器进行初始化;所述在运行目标程序生成汇编指令序列时,将所述汇编指令序列对应的指令调试信息存储在预设的调试信息存储单元中,包括:对于任一目标编译函数,基于所述即时编译器获取所述目标编译函数,并根据所述目标编译函数对所述目标程序进行优化,得到优化结果,以及更新所述全局计数器;在根据各所述目标编译函数对应...

【专利技术属性】
技术研发人员:徐良玉乔鹏程
申请(专利权)人:龙芯中科合肥技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1