[发明专利]程序调试器及一种程序的调试方法有效

专利信息
申请号: 201310322560.4 申请日: 2013-07-29
公开(公告)号: CN104346274B 公开(公告)日: 2017-06-06
发明(设计)人: C·贝茨;王帆;陈小玲 申请(专利权)人: 国际商业机器公司
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 北京市金杜律师事务所11256 代理人: 酆迅,李峥宇
地址: 美国纽*** 国省代码: 暂无信息
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 程序 调试 一种 方法
【说明书】:

技术领域

发明涉及程序调试,更具体地涉及一种程序调试器及一种程序的调试方法。

背景技术

一般而言,很多程序通常都由头文件(header files,例如C++语言中头文件扩展名为.h)和定义文件(defmition files)组成,头文件可作为一种包含类定义、功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration),起描述性作用;定义文件用于保存程序的实现(implementation)。程序的头文件中常常包含定义的类文件,一个类中包含类成员变量与类成员函数。

一个需要编译、链接形成可执行文件的面向对象编程的语言编写的程序从编写到最后运行要经历以下步骤:首先,程序员编写源程序;然后,程序员用编译器(complier)对源程序进行编译,把源程序翻译成二进制形式的目标程序(object program),其中,编译是以源程序文件为单位分别编译的,一个应用程序可能有若干个源文件,因此,会独立地编译出若干个目标文件或者目标程序,如扩展名为.o的文件;程序员再把通过编译后得到的一个程序的所有目标程序、系统的库文件、以及系统提供的其他信息用链接器(linker或者binder)链接起来,形成一个可执行的二进制文件,如.exe文件;最后,程序员可以运行形成的可执行的二进制文件,得到运行结果。

当头文件不仅声明类成员函数而且定义其实现,编译器在编译包含此头文件并调用成员函数的源文件时,在对应目标文件中将该函数标注为弱符号(或称为弱函数),以允许多个源文件调用该类成员函数,否则链接器把它们链接在一起时,链接器会报错。对应多个目标文件中的相同函数名的弱函数,链接时链接器只会选择其中的一个作为实际被调用函数。有的链接器会移除冗余的弱函数实体,而有的链接器保留所有弱函数实体。如果类的成员函数实现定义在类成员体内,则往往被编译器处理成内嵌(inline)函数,但链接器为了完成函数指针调用而不得不保留多份的弱函数实体。

调试器(debugger)是可用于调试具备调试信息可执行文件的工具,主要功能有维护程序运行,查看程序运行过程中信息,如寄存器信息,堆栈信息、变量信息,内存信息等,以及修改程序执行流程。实现这些功能首先需要让运行中的程序触发断点而停下,断点包含行号断点和函数断点。设置断点时调试器需要调试信息,其主要包括描述函数、变量、调用关系等信息的调试信息实体(Debug information Entries,DIE,可以使用dwarf格式,)和行号实体,而调试信息是在编译汇编期间生成的。

由于多份弱函数将会有多份的调试信息实体和对应的行号实体,虽然有的链接器对调试信息进行重定位,有的链接器则不对调试信息进行处理,但最终的可执行文件相对应的调试信息将保留多份弱函数的调试信息实体和对应的行号实体。问题在于:当调试器给这些类成员函数设置断点时,将不得不找到所有弱函数的调试信息实体并设置多份断点,或者在给定义在头文件的类成员函数实体内设置行号断点,也需要找到所有行号实体并设置多份断点。如果程序中有1000或更多文件包含这样的头文件,调试器需要找到1000份或更多调试信息实体或者行号实体并设置1000个或更多断点;当再次设置相同的断点时,还需要重复这1000个或更多的找到所有弱函数的调试信息实体或者行号实体并设置多份断点的工作。

发明内容

为了解决上述问题,本发明的一个目的是提供一种新的程序调试器及一种程序的调试方法。

根据本发明的一个方面,提供了一种程序的调试方法,该方法包括:

获得该程序的弱函数相关的至少一个调试信息记录;

响应于接收到对该程序中该弱函数设置断点的指令,根据获得的该程序的该弱函数相关的至少一个调试信息记录,获得与所述至少一个调试信息记录的每个一一对应的断点地址;

响应于该程序被执行到设置的该弱函数相关的断点,获得该程序的程序计数器所指向的地址;

在所述与所述至少一个调试信息记录的每个一一对应的断点地址中,获得与所述该程序的程序计数器所指向的地址匹配的断点地址;

在所述该程序的弱函数相关的至少一个调试信息记录中,对匹配的断点地址设置标记;以及

响应于再次接收到对该程序中该弱函数设置断点的指令,根据设置标记后的至少一个调试信息记录,获得匹配的断点地址对应的调试信息记录。

根据本发明的另一个方面,提供了一种程序调试器,包括:

记录获得装置,被配置为获得该程序的弱函数相关的至少一个调试信息记录;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310322560.4/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top