CN104050081A - 调试静态库函数的方法及系统 - Google Patents
调试静态库函数的方法及系统 Download PDFInfo
- Publication number
- CN104050081A CN104050081A CN201410252210.XA CN201410252210A CN104050081A CN 104050081 A CN104050081 A CN 104050081A CN 201410252210 A CN201410252210 A CN 201410252210A CN 104050081 A CN104050081 A CN 104050081A
- Authority
- CN
- China
- Prior art keywords
- function
- built
- name
- debugged
- debugging
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种调试静态库函数的方法及系统,涉及库函数调试技术领域,所述方法包括:S1:获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;S2:在待执行程序的源代码中的新建一个函数名为A的调试函数;S3:在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。本发明只需简单的改变库函数的函数名,就可实现对库函数的调试,无需修改库函数的代码,也需要不重新编译库函数,对库函数而言,功能没有任何变化,仅仅是对库函数的函数名进行更换,并且简单、易修改。
Description
技术领域
本发明涉及库函数调试技术领域,特别涉及一种调试静态库函数的方法及系统。
背景技术
静态库函数一般是指编译器提供的可在C语言源程序中调用的函数。可分为两类,一类是C语言标准规定的库函数,一类是编译器特定的库函数。由于版权原因,库函数的源代码一般是不可见的,但在头文件中可以看到它对外的接口。C语言的语句十分简单,如果要使用C语言的语句直接计算sin或cos函数,就需要编写颇为复杂的程序。因为C语言的语句中没有提供直接计算sin或cos函数的语句。又如为了显示一段文字,在C语言中也找不到显示语句,只能使用库函数printf。
C语言的库函数并不是C语言本身的一部分,它是由编译程序根据一般用户的需要编制并提供用户使用的一组程序。C的库函数极大地方便了用户,同时也补充了C语言本身的不足。事实上,在编写C语言程序时,应当尽可能多地使用库函数,这样既可以提高程序的运行效率,又可以提高编程的质量,但是由于开发者使用不当,往往会出现很多错误,很多错误最终却体现在库函数中,因此需要一种方法可以添加调试代码,用来找到错误的原因。
现有技术中为了对库函数进行调试,通常是修改库的源代码,增加调试信息,并重新编译,整个工作的工作难度较大,同时很多静态库是供应商直接提供的,使用者无法获取具体的源码,无法添加调试信息,导致无法调试。
发明内容
为了能够在不修改库函数的源代码的情况下,对库函数进行调试。
本发明提供了一种调试静态库函数的方法,所述方法包括以下步骤:
S1:获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
S2:在待执行程序的源代码中新建一个函数名为A的调试函数;
S3:在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。
其中,步骤S1之前还包括:
S0:接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
本发明还公开了一种调试静态库函数的系统,所述系统包括:
获取修改模块,用于获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
函数新建模块,用于在待执行程序的源代码中新建一个函数名为A的调试函数;
函数调用模块,用于在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。
其中,所述系统还包括:
函数名接收模块,用于接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
本发明只需简单的改变库函数的函数名,就可以简单的添加调试程序,并调用新名字的库函数,在不修改库函数的源代码的情况下,实现对库函数的调试,无需修改库函数的代码,也需要不重新编译库函数,对库函数而言,功能没有任何变化,仅仅是对库函数的函数名进行更换,并且简单、易修改。
附图说明
图1是本发明一种实施方式的调试静态库函数的方法流程图;
图2是本发明一种实施方式的调试静态库函数的系统结构框图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1是本发明一种实施方式的调试静态库函数的方法流程图;参照图1,所述方法包括以下步骤:
S1:获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
S2:在待执行程序的源代码中新建一个函数名为A的调试函数;
S3:在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。
为实现函数名的自动搜索,以提高自动化能力,优选地,步骤S1之前还包括:
S0:接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
实施例
下面以一个具体的实施例来说明本发明的方法,但不限定本发明的保护范围。本实施例的方法包括以下步骤:
步骤101:接收用户输入的函数名malloc,并根据接收到的函数名malloc在所述静态库中进行搜索;
步骤102:获取待调试库函数(即为静态库中函数名为malloc的函数),并将所述待调试库函数的函数名malloc修改为函数名Malloc(此处以Malloc为例说明,还可为其他名称),此时,当前正在执行的程序中调用malloc的位置,此时实际上没有具体函数与之对应;
步骤103:在待执行程序的源代码中新建一个函数名为malloc的调试函数;
步骤104:在所述待执行程序需要调用所述待调试库函数时(当前正在执行的程序运行至调用malloc时),先通过所述函数名malloc调用所述调试函数,再通过所述函数名Malloc调用所述待调试库函数(为了不妨碍当前正在执行的程序的本身功能,故而会通过函数名Malloc调用所述待调试库函数),以实现所述待调试库函数的调试。
本发明还公开了一种调试静态库函数的系统,参照图2,所述系统包括:
获取修改模块,用于获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
函数新建模块,用于在待执行程序的源代码中新建一个函数名为A的调试函数;
函数调用模块,用于在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。
优选地,所述系统还包括:
函数名接收模块,用于接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
Claims (4)
1.一种调试静态库函数的方法,其特征在于,所述方法包括以下步骤:
S1:获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
S2:在待执行程序的源代码中新建一个函数名为A的调试函数;
S3:在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。
2.如权利要求1所述的方法,其特征在于,步骤S1之前还包括:
S0:接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
3.一种调试静态库函数的系统,其特征在于,所述系统包括:
获取修改模块,用于获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
函数新建模块,用于在待执行程序的源代码中新建一个函数名为A的调试函数;
函数调用模块,用于在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试。
4.如权利要求3所述的系统,其特征在于,所述系统还包括:
函数名接收模块,用于接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410252210.XA CN104050081B (zh) | 2014-06-09 | 2014-06-09 | 调试静态库函数的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410252210.XA CN104050081B (zh) | 2014-06-09 | 2014-06-09 | 调试静态库函数的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050081A true CN104050081A (zh) | 2014-09-17 |
CN104050081B CN104050081B (zh) | 2017-09-12 |
Family
ID=51502967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410252210.XA Active CN104050081B (zh) | 2014-06-09 | 2014-06-09 | 调试静态库函数的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104050081B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739506A (zh) * | 2018-12-27 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
CN111061638A (zh) * | 2019-12-16 | 2020-04-24 | 上海钧正网络科技有限公司 | 一种iOS系统调试的方法、装置及服务器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499374A (zh) * | 2002-11-04 | 2004-05-26 | 华为技术有限公司 | 一种单元测试自动化方法 |
CN1567232A (zh) * | 2003-07-10 | 2005-01-19 | 华为技术有限公司 | 嵌入式系统的测试装置及测试方法 |
CN1862511A (zh) * | 2006-02-28 | 2006-11-15 | 华为技术有限公司 | 一种软件单元的测试方法 |
CN1949187A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
US20120124556A1 (en) * | 2010-11-16 | 2012-05-17 | Hon Hai Precision Industry Co., Ltd. | Computing device and device driver debugging method |
CN103034501A (zh) * | 2012-12-25 | 2013-04-10 | 广东威创视讯科技股份有限公司 | 一种linux平台的函数调用方法及函数调用装置 |
CN103516561A (zh) * | 2013-09-13 | 2014-01-15 | 汉柏科技有限公司 | 一种网络系统的调试方法 |
-
2014
- 2014-06-09 CN CN201410252210.XA patent/CN104050081B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1499374A (zh) * | 2002-11-04 | 2004-05-26 | 华为技术有限公司 | 一种单元测试自动化方法 |
CN1567232A (zh) * | 2003-07-10 | 2005-01-19 | 华为技术有限公司 | 嵌入式系统的测试装置及测试方法 |
CN1862511A (zh) * | 2006-02-28 | 2006-11-15 | 华为技术有限公司 | 一种软件单元的测试方法 |
CN1949187A (zh) * | 2006-11-17 | 2007-04-18 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
US20120124556A1 (en) * | 2010-11-16 | 2012-05-17 | Hon Hai Precision Industry Co., Ltd. | Computing device and device driver debugging method |
CN103034501A (zh) * | 2012-12-25 | 2013-04-10 | 广东威创视讯科技股份有限公司 | 一种linux平台的函数调用方法及函数调用装置 |
CN103516561A (zh) * | 2013-09-13 | 2014-01-15 | 汉柏科技有限公司 | 一种网络系统的调试方法 |
Non-Patent Citations (1)
Title |
---|
夏耘: "《C语言程序设计与实践》", 31 January 2013, 中国铁道出版社 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739506A (zh) * | 2018-12-27 | 2019-05-10 | 郑州云海信息技术有限公司 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
CN109739506B (zh) * | 2018-12-27 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
CN111061638A (zh) * | 2019-12-16 | 2020-04-24 | 上海钧正网络科技有限公司 | 一种iOS系统调试的方法、装置及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN104050081B (zh) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107450972B (zh) | 一种调度方法、装置以及电子设备 | |
US10540262B2 (en) | Using edit and continue to dynamically set and unset optimizations in source code while debugging | |
CN111694564B (zh) | Flutter混合模式的编译方法、装置、设备和介质 | |
CN103552071A (zh) | 一种智能机器人的编程方法 | |
CN105676808B (zh) | 一种工业控制系统逻辑断点调试功能的实现方法 | |
CN109241026B (zh) | 数据管理的方法、装置及系统 | |
CN105204837B (zh) | 一种逻辑编程的实现方法和装置 | |
CN105701006A (zh) | 用于程序调试中的变量跟踪的方法和系统 | |
US11704139B2 (en) | Service processing method and apparatus, electronic device, and storage medium | |
US9639343B2 (en) | Method for altering execution of a program, debugger, and computer-readable medium | |
CN109766139B (zh) | 配置文件的配置方法及装置 | |
CN104391717A (zh) | 一种调试时代码动态更新方法 | |
CN108345451B (zh) | 一种连续功能图编程方法 | |
US8225286B2 (en) | Debugging interpreted input | |
TW201942736A (zh) | 函式選取方法和伺服器 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
US8683439B2 (en) | System and process for debugging object-oriented programming code leveraging preprocessors | |
CN104050081A (zh) | 调试静态库函数的方法及系统 | |
CN105005497A (zh) | 一种Java卡虚拟机中本地函数的调用方法及装置 | |
CN116432185B (zh) | 一种异常检测方法、装置、可读存储介质及电子设备 | |
Cheng et al. | Toward arbitrary mapping for debugging visualizations | |
US20140189656A1 (en) | Flow Analysis in Program Execution | |
CN103631585A (zh) | 一种用于开发应用程序的方法及系统 | |
US20120233594A1 (en) | Sharable development environment bookmarks for functional/data flow | |
WO2022194090A1 (zh) | 一种多语言混合调试方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20180528 Granted publication date: 20170912 |