一种程序调试方法及装置制造方法及图纸

技术编号:16662734 阅读:27 留言:0更新日期:2017-11-30 11:53
本申请公开了一种程序调试方法,包括将业务进程的数据文件以mmap方式映射到调试进程的内存空间;利用BE二进制编辑器,根据所述业务进程的资源文件和符号表文件,对所述数据文件进行解析和调试;其中,所述资源文件和所述符号表文件预先在所述业务进程的编译过程中生成。本申请利用将业务进程的数据文件映射到调试进程中,可以在不影响业务进程执行效率的情况下,依据资源文件和符号表文件对该数据文件进行解析以完成调试。本申请还公开了一种程序调试装置,同样具有上述有益效果。

【技术实现步骤摘要】
一种程序调试方法及装置
本申请涉及存储
,特别涉及一种程序调试方法及装置。
技术介绍
随着信息技术的飞速发展,存储
中的技术革新也是日新月异,悄然改变着人们的生产生活方式。目前,单一的磁盘存储设备已经逐渐转变为更加复杂的智能化存储设备系统,基于Linux系统进行软件开发,以满足现代社会的生产要求。随着新功能的开发,相关的软件代码逐渐增多,代码复杂程度也随之增大,因而,对程序进行调试以解决程序bug故障原因的难度也大大提升。现有技术中采用的传统程序调试方法,是基于GDB调试工具采用ptrace方式进行的断点调试,通过设置断点一步步调试程序,因而在调试过程中会影响程序的执行效率。而对于存储设备来说,调试过程中对应用程序执行效率的影响严格来说是不允许的,这会严重影响到系统所提供的存储服务。由此可见,如何在不降低业务进程的执行效率的基础上,对业务进程的程序进行在线调试,是本领域技术人员亟待解决的技术问题,在存储设备技术开发中具有重要的意义。
技术实现思路
本申请的目的在于提供一种程序调试方法及装置,以便在调试的过程中可以有效地保障业务进程的执行效率。为解决上述技术问题,本申请提供一种程序调试方法,包括:将业务进程的数据文件以mmap方式映射到调试进程的内存空间;利用BE二进制编辑器,根据所述业务进程的资源文件和符号表文件,对所述数据文件进行解析和调试;其中,所述资源文件和所述符号表文件预先在所述业务进程的编译过程中生成。可选地,还包括:若所述业务进程的源代码被修改,则再次在所述业务进程的编译过程中生成所述资源文件和所述符号表文件。可选地,所述在所述业务进程的编译过程中生成所述资源文件和所述符号表文件包括:将BE代码嵌入所述源代码中,用以注释所述源代码中的数据结构;利用AWK处理工具,抽取所述源代码中的所述BE代码组成所述资源文件;利用GCC编译器,将嵌入有BE代码的所述源代码编译成可执行文件;利用readelf处理命令,读取所述可执行文件中的符号信息生成所述符号表文件。可选地,所述数据文件包括所述业务进程的以下任意一项或者组合:数据段、BSS段、堆栈。本申请还提供了一种程序调试装置,包括:映射模块:用于将业务进程的数据文件以mmap方式映射到调试进程的内存空间;调试模块:用于利用BE二进制编辑器,根据所述业务进程的资源文件和符号表文件,对所述数据文件进行解析和调试;生成模块:用于预先在所述业务进程的编译过程中,生成所述资源文件和所述符号表文件。可选地,所述生成模块还用于:在所述业务进程的源代码被修改后,再次在所述业务进程的编译过程中生成所述资源文件和所述符号表文件。可选地,所述生成模块具体用于:将BE代码嵌入所述源代码中,用以注释所述源代码中的数据结构;利用AWK处理工具,抽取所述源代码中的所述BE代码组成所述资源文件;利用GCC编译器,将嵌入有BE代码的所述源代码编译成可执行文件;利用readelf处理命令,读取所述可执行文件中的符号信息生成所述符号表文件。可选地,所述数据文件包括所述业务进程的以下任意一项或者组合:数据段、BSS段、堆栈。本申请所提供的程序调试方法中,将业务进程的数据文件以mmap方式映射到调试进程的内存空间;利用BE二进制编辑器,根据所述业务进程的资源文件和符号表文件,对所述数据文件进行解析和调试;其中,所述资源文件和所述符号表文件预先在所述业务进程的编译过程中生成。可见,相比于现有技术,本申请所提供的程序调试方法中,利用建立mmap映射,使得调试进程可以共享业务进程的内存空间,由此可以根据业务进程的符号表和资源文件,对业务进程的数据文件进行解析和调试,而不会影响到业务进程的执行。由此可见,本申请所提供的程序调试方法,可以有效实现在进行调试的同时,保障业务进程的执行效率。本申请所提供的程序调试装置可以实现上述程序调试方法,同样具有上述有益效果。附图说明为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。图1为本申请实施例所提供的一种程序调试方法的流程图;图2为本申请实施例所提供的一种生成业务进程的资源文件和符号表文件的流程图;图3为本申请实施例所提供的一种程序调试装置的结构框图。具体实施方式为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参考图1,图1为本申请实施例所提供的一种程序调试方法的流程图,主要包括以下步骤:步骤101:将业务进程的数据文件以mmap方式映射到调试进程的内存空间。Mmap是linux提供的共享内存方式,它可以将文件或者其他类型的对象映射到内存,使得不同的进程之间通过映射同一个普通文件而实现共享内存。当文件被映射到进程的内存空间后,进程可以像访问普通内存一样对该文件进行访问。因此,将业务进程的数据文件以mmap方式映射到调试进程的内存空间之后,调试进程就可以像访问普通内存一样对业务进程的数据文件进行访问了。业务进程存储在其内存映像中的数据文件,包括该业务进程的数据段,BSS段和堆栈,在进行调试修时,可对以上任意一项或组合进行修改。步骤102:利用BE二进制编辑器,根据业务进程的资源文件和符号表文件,对数据文件进行解析和调试。资源文件是描述了业务进程的各个符号的数据结构的文件,其一般为*.berc文件。符号表文件则是描述了业务进程的各个符号在内存映像中的地址信息的文件,其一般为*.sym文件。这里所说的解析的过程,即为当获取到业务进程的资源文件和符号表文件之后,可按照资源文件中符号的数据结构描述,到符号表中同一符号的存储地址去读取该符号的内容的过程。例如,对于某个符号名为VarA的符号,若其在资源文件中记录的数据结构为4字节int类型,而其在符号表文件中记录的存储地址为0x11111110时,则就可以按照4字节int类型对内存地址0x11111110进行解析,读取4个字节中的内容。则符号VarA就是内存地址0x11111110~0x11111113中的解析内容。由此可见,解析是按照资源文件的描述对特定内存地址进行解读的过程,进而可以获取业务进程的数据文件的详细信息,以便利用BE(BinaryEditor)二进制编辑器进行修改调试。其中,BE是常用的一种二进制编辑器,可以对二进制数据文件进行查看和编辑。需要说明的是,业务进程的资源文件和符号表文件,是在通过编译获取业务进程的可执行文件的过程中生成的,当要对业务进程的数据文件进行调试时,只需调用该业务进程的资源文件和符号表文件即可。具体的,有关资源文件和符号表文件的生成过程,可以参考图2中所示内容。请参考图2,图2为本申请所提供的一种生成业务进程的资源文件和符号表文件的流程图。步骤201:本文档来自技高网...
一种程序调试方法及装置

【技术保护点】
一种程序调试方法,其特征在于,包括:将业务进程的数据文件以mmap方式映射到调试进程的内存空间;利用BE二进制编辑器,根据所述业务进程的资源文件和符号表文件,对所述数据文件进行解析和调试;其中,所述资源文件和所述符号表文件预先在所述业务进程的编译过程中生成。

【技术特征摘要】
1.一种程序调试方法,其特征在于,包括:将业务进程的数据文件以mmap方式映射到调试进程的内存空间;利用BE二进制编辑器,根据所述业务进程的资源文件和符号表文件,对所述数据文件进行解析和调试;其中,所述资源文件和所述符号表文件预先在所述业务进程的编译过程中生成。2.根据权利要求1所述程序调试方法,其特征在于,还包括:若所述业务进程的源代码被修改,则再次在所述业务进程的编译过程中生成所述资源文件和所述符号表文件。3.根据权利要求2所述程序调试方法,其特征在于,所述在所述业务进程的编译过程中生成所述资源文件和所述符号表文件包括:将BE代码嵌入所述源代码中,用以注释所述源代码中的数据结构;利用AWK处理工具,抽取所述源代码中的所述BE代码组成所述资源文件;利用GCC编译器,将嵌入有BE代码的所述源代码编译成可执行文件;利用readelf处理命令,读取所述可执行文件中的符号信息生成所述符号表文件。4.根据权利要求1至3任一项所述程序调试方法,其特征在于,所述数据文件包括所述业务进程的以下任意一项或者组合:数据段、BSS段、堆栈。5...

【专利技术属性】
技术研发人员:王艳清徐洪志
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1