CN106940681A - 一种利用跟踪函数和解析工具调试存储软件的方法 - Google Patents
一种利用跟踪函数和解析工具调试存储软件的方法 Download PDFInfo
- Publication number
- CN106940681A CN106940681A CN201710143423.2A CN201710143423A CN106940681A CN 106940681 A CN106940681 A CN 106940681A CN 201710143423 A CN201710143423 A CN 201710143423A CN 106940681 A CN106940681 A CN 106940681A
- Authority
- CN
- China
- Prior art keywords
- storage software
- tracing function
- buffer circle
- storage
- software
- 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
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000006870 function Effects 0.000 claims abstract description 44
- 238000003860 storage Methods 0.000 claims abstract description 23
- 230000002159 abnormal effect Effects 0.000 claims description 14
- 230000003139 buffering effect Effects 0.000 claims description 5
- 238000000151 deposition Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计算机系统及存储领域,公开一种利用跟踪函数和解析工具调试存储软件的方法,包括以下步骤:编写跟踪函数并将其嵌入存储软件需要调试的代码路径上;在存储软件的代码异常分支启用assert;设置环形缓冲区;运行存储软件;判断存储软件是否正常运行,若是,则保存跟踪信息到环形缓冲区并继续运行存储软件;若否,则调用assert终止存储软件运行,系统生成内存转储文件;利用解析工具对内存转储文件进行解析,实现存储软件的问题定位。本发明提供一种利用跟踪函数和解析工具调试存储软件的方法,采用在存储软件需要调试的代码路径上嵌入跟踪函数并通过解析内存转储文件、在不影响存储软件性能的前提下实现存储软件的问题定位。
Description
技术领域
本发明涉及计算机系统及存储领域,尤其涉及一种利用跟踪函数和解析工具调试存储软件的方法。
背景技术
存储系统是由Target、远程复制、快照、镜像、缓存、数据池和RAID,以及FC、NIC、SAS硬件驱动和底层OS构成的一套复杂系统。除此之外,存储系统必须要保证各种场景下的数据一致性、性能和延时,并容忍单点硬件故障。存储系统部署在客户重要的生产环境中,不能频繁的升级、调试和搜集数据,存储系统的应用一般庞大复杂,重现问题有较大的难度,这些要求进一步增加了存储系统的复杂性。
存储系统的复杂性和应用场景给存储软件的问题定位带来了极大的复杂性,严重影响客户数据的安全、产品的完善和维护成本。
发明内容
本发明针对目前需求以及现有技术发展的不足之处,提供一种利用跟踪函数和解析工具调试存储软件的方法,采用在存储软件需要调试的代码路径上嵌入跟踪函数,并通过解析内存转储文件实现存储软件的问题定位。
为了实现上述目的,本发明采用以下的技术方案:
一种利用跟踪函数和解析工具调试存储软件的方法,包括以下步骤:
编写跟踪函数并将其嵌入到存储软件需要调试的代码路径上;
在存储软件的代码异常分支启用assert;
设置环形缓冲区,所述环形缓冲区用来存放调用跟踪函数产生的跟踪信息;
运行存储软件;
判断存储软件是否正常运行,若是,则保存跟踪信息到环形缓冲区并继续运行存储软件;若否,则调用assert终止存储软件运行,系统生成内存转储文件;
利用解析工具对内存转储文件进行解析,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。
优选地,所述环形缓冲区包括多个存储条目,每个存储条目存储一条跟踪信息。
优选地,所述环形缓冲区执行覆盖式写入,每调用一次跟踪函数覆盖环形缓冲区保存的最旧的一条跟踪信息。
优选地,设置环形缓冲区,所述环形缓冲区用来存放调用跟踪函数产生的跟踪信息,包括:
根据调用跟踪函数的复杂度和系统内存总量在系统内存中划分环形缓冲区大小;
将环形缓冲区等分为多个存储条目。
优选地,所述内存转储文件为ELF格式文件并保存在硬盘上。
优选地,所述内存转储文件包括存储软件出现异常时环形缓冲区内保存的跟踪信息。
优选地,所述内存转储文件包括Program Headers字段。
优选地,所述Program Headers字段包括Load信息行。
优选地,所述Load信息行包括内存转储文件的起始地址和偏移量。
优选地,利用解析工具对内存转储文件进行解析,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位,包括:
解析内存转储文件;
查看环形缓冲区起始地址;
查看内存转储文件起始地址和偏移量;
通过环形缓冲区起始地址、内存转储文件的起始地址和偏移量得出环形缓冲区的偏移量;
根据环形缓冲区的偏移量和大小,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。
本发明的有益效果:
本发明提供一种利用跟踪函数和解析工具调试存储软件的方法,采用在存储软件需要调试的代码路径上嵌入跟踪函数,并设置环形缓冲区存储产生的跟踪信息来保留存储软件的问题现场,当存储软件正常运行时保存跟踪信息到环形缓冲区,当存储软件不能正常运行即出现问题时,则生成包含有存储软件的问题现场信息即存储软件出现异常时环形缓冲区内保存的跟踪信息的内存转储文件,通过解析工具解析内存转储文件,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。因为只在系统内存的环形缓冲区内保留跟踪信息,不会影响存储软件性能。
附图说明
图1为本发明一种利用跟踪函数和解析工具调试存储软件的方法的流程示意图之一。
图2为本发明一种利用跟踪函数和解析工具调试存储软件的方法的流程示意图之二。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解,对本发明中出现的部分名词作以下解释说明:
assert:断言。编写代码时,我们总是会做出一些假设,assert就是用于在代码中捕捉这些假设,可以将assert看作是异常处理的一种高级形式。assert表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用assert验证,因此可以在测试时启用assert,而在部署时禁用assert。同样,程序投入运行后,最终用户在遇到问题时可以重新启用assert。
内存转储文件:用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途,系统崩溃时所保存生成的文件叫做内存转储文件。
readelf:用来显示一个或者多个ELF格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。可以支持32位、64位的ELF格式文件,也支持包含ELF文件的文档。
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
实施例一:
如图1所示,本发明的一种利用跟踪函数和解析工具调试存储软件的方法,包括以下步骤:
步骤S101:编写跟踪函数并将其嵌入到存储软件需要调试的代码路径上。
步骤S102:在存储软件的代码异常分支启用assert。
步骤S103:根据调用跟踪函数的复杂度和系统内存总量在系统内存中划分环形缓冲区大小。
步骤S104:将环形缓冲区等分为多个存储条目。
步骤S105:运行存储软件,环形缓冲区执行覆盖式写入,每调用一次跟踪函数覆盖环形缓冲区保存的最旧的一条跟踪信息,最旧的一条跟踪信息是指最后一次被访问的时间距离当前间隔时间最长的一条跟踪信息。
步骤S106:判断存储软件是否正常运行,若是,则保存跟踪信息到环形缓冲区并继续运行存储软件;若否,则调用assert终止存储软件运行,系统生成内存转储文件。
步骤S107:解析内存转储文件。
步骤S108:查看环形缓冲区起始地址。
步骤S109:查看内存转储文件起始地址和偏移量。
步骤S110:通过环形缓冲区起始地址和内存转储文件的起始地址和偏移量得出环形缓冲区的偏移量。
步骤S111:根据环形缓冲区的偏移量和大小,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。
作为一种可实施的方式,环形缓冲区大小设为512M。
作为一种可实施的方式,将环形缓冲区等分为256个存储条目,每个存储条目256字节。
作为一种可实施的方式,解析工具选择readelf。
作为一种可实施的方式,
环形缓冲区起始地址是0x0000000000601058,
内存转储文件的起始地址是0x0000000000601000,
内存转储文件的偏移量是0x0000000000003000,
因此环形缓存区的偏移量是0x0000000000003058。
值得说明的是,内存转储文件为ELF格式文件并保存在硬盘上,内存转储文件包括存储软件出现异常时环形缓冲区内保存的跟踪信息,还包括Program Headers字段;Program Headers字段包括Load信息行;Load信息行包括内存转储文件的起始地址和偏移量。
实施例二:
如图2所示,本发明的另一种利用跟踪函数和解析工具调试存储软件的方法,包括以下步骤:
步骤S201:编写跟踪函数并将其嵌入到存储软件需要调试的代码路径上。
步骤S202:在存储软件的代码异常分支启用assert。
步骤S203:设置环形缓冲区,所述环形缓冲区用来存放调用跟踪函数产生的跟踪信息。
步骤S204:运行存储软件。
步骤S205:判断存储软件是否正常运行,若是,则保存跟踪信息到环形缓冲区并继续运行存储软件;若否,则调用assert终止存储软件运行,系统生成内存转储文件。
步骤S206:利用解析工具对内存转储文件进行解析,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。
作为一种可实施的方式,解析工具选择readelf。
值得说明的是,环形缓冲区执行覆盖式写入,每调用一次跟踪函数覆盖环形缓冲区保存的最旧的一条跟踪信息;内存转储文件为ELF格式文件并保存在硬盘上,内存转储文件包括存储软件出现异常时环形缓冲区内保存的跟踪信息。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的算法步骤及模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。而这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所示仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,包括以下步骤:
编写跟踪函数并将其嵌入到存储软件需要调试的代码路径上;
在存储软件的代码异常分支启用assert;
设置环形缓冲区,所述环形缓冲区用来存放调用跟踪函数产生的跟踪信息;
运行存储软件;
判断存储软件是否正常运行,若是,则保存跟踪信息到环形缓冲区并继续运行存储软件;若否,则调用assert终止存储软件运行,系统生成内存转储文件;
利用解析工具对内存转储文件进行解析,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。
2.根据权利要求1所述的一种利用跟踪函数和解析工具调试存储软件的方法,所述环形缓冲区包括多个存储条目,每个存储条目存储一条跟踪信息。
3.根据权利要求1所述的一种利用跟踪函数和解析工具调试存储软件的方法,所述环形缓冲区执行覆盖式写入,每调用一次跟踪函数覆盖环形缓冲区保存的最旧的一条跟踪信息。
4.根据权利要求1所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,设置环形缓冲区,所述环形缓冲区用来存放调用跟踪函数产生的跟踪信息,包括:
根据调用跟踪函数的复杂度和系统内存总量在系统内存中划分环形缓冲区大小;
将环形缓冲区等分为多个存储条目。
5.根据权利要求1所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,所述内存转储文件为ELF格式文件并保存在硬盘上。
6.根据权利要求1所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,所述内存转储文件包括存储软件出现异常时环形缓冲区内保存的跟踪信息。
7.根据权利要求1所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,所述内存转储文件包括Program Headers字段。
8.根据权利要求7所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,所述Program Headers字段包括Load信息行。
9.根据权利要求8所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,所述Load信息行包括内存转储文件的起始地址和偏移量。
10.根据权利要求9所述的一种利用跟踪函数和解析工具调试存储软件的方法,其特征在于,利用解析工具对内存转储文件进行解析,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位,包括:
解析内存转储文件;
查看环形缓冲区起始地址;
查看内存转储文件起始地址和偏移量;
通过环形缓冲区起始地址、内存转储文件的起始地址和偏移量得出环形缓冲区的偏移量;
根据环形缓冲区的偏移量和大小,查看存储软件出现异常时环形缓冲区内保存的跟踪信息,实现存储软件的问题定位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710143423.2A CN106940681B (zh) | 2017-03-11 | 2017-03-11 | 一种利用跟踪函数和解析工具调试存储软件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710143423.2A CN106940681B (zh) | 2017-03-11 | 2017-03-11 | 一种利用跟踪函数和解析工具调试存储软件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106940681A true CN106940681A (zh) | 2017-07-11 |
CN106940681B CN106940681B (zh) | 2020-07-21 |
Family
ID=59469010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710143423.2A Active CN106940681B (zh) | 2017-03-11 | 2017-03-11 | 一种利用跟踪函数和解析工具调试存储软件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106940681B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448815A (zh) * | 2020-03-26 | 2021-09-28 | 华为技术有限公司 | 一种采集追踪trace调用链的方法和电子设备 |
CN113760696A (zh) * | 2020-07-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种程序问题定位方法、装置、电子设备和存储介质 |
CN115061837A (zh) * | 2022-08-16 | 2022-09-16 | 苏州浪潮智能科技有限公司 | 一种调度跟踪和获取用户空间调用栈的方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704908A (zh) * | 2004-05-26 | 2005-12-07 | 华为技术有限公司 | 定位程序异常的方法 |
CN101246449A (zh) * | 2008-02-25 | 2008-08-20 | 华为技术有限公司 | 跟踪函数调用轨迹的方法和装置 |
WO2016070694A1 (zh) * | 2014-11-03 | 2016-05-12 | 广州市动景计算机科技有限公司 | 基于GCC和Chromium的代码跟踪方法及系统 |
CN106294095A (zh) * | 2015-05-13 | 2017-01-04 | 苏州简约纳电子有限公司 | 一种跟踪嵌入式系统函数调用轨迹的方法 |
CN106294071A (zh) * | 2016-08-11 | 2017-01-04 | 宁波舜宇光电信息有限公司 | 一种软件崩溃信息收集方法及其系统 |
-
2017
- 2017-03-11 CN CN201710143423.2A patent/CN106940681B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1704908A (zh) * | 2004-05-26 | 2005-12-07 | 华为技术有限公司 | 定位程序异常的方法 |
CN101246449A (zh) * | 2008-02-25 | 2008-08-20 | 华为技术有限公司 | 跟踪函数调用轨迹的方法和装置 |
WO2016070694A1 (zh) * | 2014-11-03 | 2016-05-12 | 广州市动景计算机科技有限公司 | 基于GCC和Chromium的代码跟踪方法及系统 |
CN106294095A (zh) * | 2015-05-13 | 2017-01-04 | 苏州简约纳电子有限公司 | 一种跟踪嵌入式系统函数调用轨迹的方法 |
CN106294071A (zh) * | 2016-08-11 | 2017-01-04 | 宁波舜宇光电信息有限公司 | 一种软件崩溃信息收集方法及其系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448815A (zh) * | 2020-03-26 | 2021-09-28 | 华为技术有限公司 | 一种采集追踪trace调用链的方法和电子设备 |
CN113760696A (zh) * | 2020-07-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种程序问题定位方法、装置、电子设备和存储介质 |
CN115061837A (zh) * | 2022-08-16 | 2022-09-16 | 苏州浪潮智能科技有限公司 | 一种调度跟踪和获取用户空间调用栈的方法和装置 |
CN115061837B (zh) * | 2022-08-16 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 一种调度跟踪和获取用户空间调用栈的方法和装置 |
WO2024037544A1 (zh) * | 2022-08-16 | 2024-02-22 | 苏州元脑智能科技有限公司 | 一种调度跟踪和获取用户空间调用栈的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106940681B (zh) | 2020-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625452B (zh) | 流量回放方法和系统 | |
KR102281827B1 (ko) | 프로그램 컨테이너 모니터링 | |
US20080086515A1 (en) | Method and System for a Soft Error Collection of Trace Files | |
US9793927B2 (en) | Storage systems with adaptive erasure code generation | |
US20140365834A1 (en) | Memory management tools | |
CN106940681A (zh) | 一种利用跟踪函数和解析工具调试存储软件的方法 | |
CN101944064B (zh) | 一种基于重构控制流图的控制流错误检测优化方法 | |
CN102841998B (zh) | 内存附加校验器的内存数据完整性保护方法 | |
CN104881370B (zh) | 协同使用纠删码和纠错码的可靠闪存存储系统构建方法 | |
US9804908B2 (en) | Log output condition setting method and apparatus | |
US8819640B2 (en) | Establishing cloud debug breakpoints assigned to users | |
CN108108483B (zh) | 基于SpringAop拦截DAO层校验SQL的方法、装置和系统 | |
CN103218176A (zh) | 数据处理方法及装置 | |
US8661187B2 (en) | System, method, and computer program product for skewing expected wearout times of memory devices | |
US20120246518A1 (en) | Operating a computer system | |
CN107832448A (zh) | 数据库操作方法、装置及设备 | |
CN103226499A (zh) | 一种恢复内部存储器中的异常数据的方法及装置 | |
CN107145547A (zh) | 一种异常数据的获取方法、设备及计算机可读存储介质 | |
CN110378778A (zh) | 多数据源对账方法、系统、电子设备及存储介质 | |
US20170083426A1 (en) | Memory management tools | |
CN104246693A (zh) | 用于保护调用栈中的数据的信息处理装置和方法 | |
CN108228434A (zh) | 一种内核源码级的系统调用跟踪方法 | |
CN107368498A (zh) | 优化MySQL悲观锁的锁等待超时时间的方法及装置 | |
CN110297822A (zh) | 面向区块链的密钥管理方法、装置、设备及存储介质 | |
CN106919474A (zh) | 一种缓存数据保护方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200623 Address after: 215000 Building 9, No.1, guanpu Road, Guoxiang street, Wuzhong Economic Development Zone, Suzhou City, Jiangsu Province Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd. Address before: 450000 Henan province Zheng Dong New District of Zhengzhou City Xinyi Road No. 278 16 floor room 1601 Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |