CN104050081B - 调试静态库函数的方法及系统 - Google Patents
调试静态库函数的方法及系统 Download PDFInfo
- Publication number
- CN104050081B CN104050081B CN201410252210.XA CN201410252210A CN104050081B CN 104050081 B CN104050081 B CN 104050081B CN 201410252210 A CN201410252210 A CN 201410252210A CN 104050081 B CN104050081 B CN 104050081B
- Authority
- CN
- China
- Prior art keywords
- function
- built
- debugging
- debugged
- name
- 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.)
- Active
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 (2)
1.一种调试静态库函数的方法,其特征在于,所述方法包括以下步骤:
S1:获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
S2:在待执行程序的源代码中新建一个函数名为A的调试函数;
S3:在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试,
其中,步骤S1之前还包括:
S0:接收用户输入的函数名A,并根据接收到的函数名A在所述静态库中进行搜索。
2.一种调试静态库函数的系统,其特征在于,所述系统包括:
获取修改模块,用于获取待调试库函数,并将所述待调试库函数的函数名A修改为函数名B;
函数新建模块,用于在待执行程序的源代码中新建一个函数名为A的调试函数;
函数调用模块,用于在所述待执行程序需要调用所述待调试库函数时,先通过所述函数名A调用所述调试函数,再通过所述函数名B调用所述待调试库函数,以实现所述待调试库函数的调试,
其中,所述系统还包括:
函数名接收模块,用于接收用户输入的函数名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 CN104050081A (zh) | 2014-09-17 |
CN104050081B true 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) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109739506B (zh) * | 2018-12-27 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种高性能应用编译中库函数缺失的处理方法及系统 |
CN111061638B (zh) * | 2019-12-16 | 2023-06-30 | 上海钧正网络科技有限公司 | 一种iOS系统调试的方法、装置及服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1862511A (zh) * | 2006-02-28 | 2006-11-15 | 华为技术有限公司 | 一种软件单元的测试方法 |
CN103034501A (zh) * | 2012-12-25 | 2013-04-10 | 广东威创视讯科技股份有限公司 | 一种linux平台的函数调用方法及函数调用装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1273897C (zh) * | 2002-11-04 | 2006-09-06 | 华为技术有限公司 | 一种单元测试自动化方法 |
CN100359485C (zh) * | 2003-07-10 | 2008-01-02 | 华为技术有限公司 | 嵌入式系统的测试装置及测试方法 |
CN100541445C (zh) * | 2006-11-17 | 2009-09-16 | 深圳市领测科技有限公司 | 一种程序调测系统及方法 |
CN102467447A (zh) * | 2010-11-16 | 2012-05-23 | 鸿富锦精密工业(深圳)有限公司 | 驱动程序调试系统及方法 |
CN103516561B (zh) * | 2013-09-13 | 2017-11-28 | 汉柏科技有限公司 | 一种网络系统的调试方法 |
-
2014
- 2014-06-09 CN CN201410252210.XA patent/CN104050081B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1862511A (zh) * | 2006-02-28 | 2006-11-15 | 华为技术有限公司 | 一种软件单元的测试方法 |
CN103034501A (zh) * | 2012-12-25 | 2013-04-10 | 广东威创视讯科技股份有限公司 | 一种linux平台的函数调用方法及函数调用装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104050081A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7478366B2 (en) | Debugger and method for debugging computer programs across multiple programming languages | |
US9819758B2 (en) | Remote debugging into mobile web applications across devices | |
US20160357519A1 (en) | Natural Language Engine for Coding and Debugging | |
CN108351764B (zh) | 数据处理方法和系统 | |
US8752020B2 (en) | System and process for debugging object-oriented programming code leveraging runtime metadata | |
US9418230B2 (en) | Automated tools for building secure software programs | |
US8291386B2 (en) | System and process for debugging object-oriented programming code | |
Jovanovic et al. | Yin-Yang: Concealing the deep embedding of DSLs | |
US9262125B2 (en) | Contextual focus-agnostic parsing-validated alternatives information | |
US9639343B2 (en) | Method for altering execution of a program, debugger, and computer-readable medium | |
US8683439B2 (en) | System and process for debugging object-oriented programming code leveraging preprocessors | |
CN104050081B (zh) | 调试静态库函数的方法及系统 | |
WO2023231320A1 (zh) | 无栈协程的实现方法、装置、设备及存储介质 | |
US9612829B2 (en) | System and method for pattern based services extraction | |
Brinkmann et al. | Task debugging with temanejo | |
CN105487973A (zh) | 连续捕获程序异常的处理器异常测试方法 | |
Cheng et al. | Toward arbitrary mapping for debugging visualizations | |
EP2634693A1 (en) | Method and apparatus for interacting with runnung software | |
Pollock et al. | Introducing natural language program analysis | |
Vedurada et al. | Refactoring opportunities for replacing type code with state and subclass | |
CN106681723A (zh) | 一种用户界面ui的开发方法和装置 | |
JP2013152559A (ja) | プログラム比較解析装置およびプログラム比較解析方法 | |
KR101761732B1 (ko) | 어플리케이션 소스 코드의 오류 검출 장치 및 그 방법 | |
JP2019109687A (ja) | プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム | |
Hilyard et al. | C# 6.0 Cookbook: Solutions for C# Developers |
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 |
Effective date of registration: 20180528 Granted publication date: 20170912 |
|
PP01 | Preservation of patent right |