CN103279417A - 检测锁异常的方法与装置 - Google Patents
检测锁异常的方法与装置 Download PDFInfo
- Publication number
- CN103279417A CN103279417A CN2013102214778A CN201310221477A CN103279417A CN 103279417 A CN103279417 A CN 103279417A CN 2013102214778 A CN2013102214778 A CN 2013102214778A CN 201310221477 A CN201310221477 A CN 201310221477A CN 103279417 A CN103279417 A CN 103279417A
- Authority
- CN
- China
- Prior art keywords
- lock
- file
- release
- code
- locking
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种直观、简便的检测锁异常的方法与装置。包括以下步骤:启动程序;锁定程序时,生成锁的ID,在设定的路径内生成锁标记文件,锁标记文件的内容或文件名与锁的ID、加锁时间、代码文件名或加锁的代码的行号相关;解锁时,根据解锁的锁的ID,删除相应的锁标记文件。另一种检测锁异常的方法,锁定程序时,生成锁的ID,在锁流水文件中写入本次锁定的信息相关的内容;解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本发明操作十分方便,通过肉眼观察即可很直观地发现代码文件中是否出现锁异常的问题以及原因。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种检测计算机程序运行过程中锁异常的方法与装置。
背景技术
在各种***开发过程中,都需要使用锁来控制共享与并发的访问。锁也称互斥锁,例如在共享中,一个文件被一个用户使用时,进行加锁,其它人就暂时不能使用,需要等到解锁之后,才可以访问使用。因此如果锁没有合理的释放,就会出现死锁。死锁的排查是***调试的一个常见问题。目前,业内主要的死锁发现机制,主要是依赖于语言本身的检查机制,或者是日志。但是应用上述方式使得锁的分析与排查非常复杂,也不直观,对分析人员的能力具有较高要求,并会花费大量工作时间。
发明内容
本发明的目的在于,提供一种直观、简便的检测锁异常的方法与装置。
为实现上述发明目的,本发明提供了一种检测锁异常的方法,包括以下步骤:
启动程序;
锁定程序时,生成锁的ID,在设定的路径内生成锁标记文件,锁标记文件的内容或文件名与锁的ID、加锁时间、代码文件名或加锁的代码的行号 相关;
解锁时,根据解锁的锁的ID,删除相应的锁标记文件。
优选地,在步骤启动程序后,进行步骤:
创立锁跟踪文件夹;
锁定程序时,在锁跟踪文件夹内生成锁标记文件。
优选地,在锁定程序,生成锁的ID时,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态,并储存;
解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态,并储存。
优选地,所述锁流水文件与锁标记文件位于同一文件夹内。
本发明还提供了另一种检测锁异常的方法,包括以下步骤:
启动程序;
锁定程序时,生成锁的ID,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态,并储存;
解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态,并储存。
相应地,本发明提供了一种检测锁异常的装置,包括以下模块:
存储模块,用于存储锁标记文件;
启动模块,用于启动程序;
锁定模块,用于锁定程序时,生成锁的ID,在设定的路径内生成锁标记文件,锁标记文件的内容或文件名与锁的ID、加锁时间、代码文件名或加锁的代码的行号相关;
解锁模块,用于解锁时,根据解锁的锁的ID,删除相应的锁标记文件。
优选地,所述检测锁异常的装置中,
启动模块还用于创立锁跟踪文件夹,所述锁跟踪文件夹存储于存储模块中;
锁定模块用于锁定程序时,在锁跟踪文件夹内生成锁标记文件。
优选地,锁定模块还用于在锁定程序,生成锁的ID时,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态;
解锁模块还用于解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态;
所述锁流水文件存储于存储模块中。
更优选地,所述锁流水文件与锁标记文件位于存储模块的同一文件夹内。
本发明提供了另一种检测锁异常的装置,包括以下模块:
启动模块,用于启动程序;
锁定模块,用于锁定程序时,生成锁的ID,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态;
解锁模块,用于解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态。
与现有技术分析锁异常依赖于语言本身的检查机制,或者是日志不同,本发明在锁定程序时,生成锁的ID,在设定的路径内生成与锁的ID、加锁时间、代码文件名或加锁的代码的行号相关的锁标记文件;解锁时,根据解锁的锁的ID,删除相应的锁标记文件。因此在出现锁异常的情况下(例如程序出现死锁的时候)立刻查看锁标记文件,如果有发现锁标记文件存在,则说明锁定还未解除,可以根据锁标记文件的内容或文件名,查看锁的情况,例如锁的位置等。
本发明的另一相关方法中,在锁定程序时,生成锁的ID,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态;解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态。因此在出现锁异常的情况下(例如程序出现死锁的时候)立刻查看锁流水文件,可以根据锁流水文件的内容,查看锁的情况,例如锁的位置、状态(锁定或解锁),以及相应的代码位置等。
本发明操作十分方便,通过肉眼观察即可很直观地发现代码文件中是否出现锁异常的问题以及原因。而且本发明布署方便,无需工具,不需要开发人员具备很强的代码调试能力;同时不需要开发人员全程参与,减小测试时对开发人员的依赖。
附图说明
图1为本发明具体实施方式所述检测锁异常的方法的流程图;
图2为本发明具体实施方式所述检测锁异常的装置的架构图。
具体实施方式
如图1所示,本实施例提供了一种检测锁异常的方法,包括以下步骤:
S101启动程序;
S102锁定程序时,生成锁的ID,在锁跟踪文件夹内生成锁标记文件,锁标记文件的内容或文件名为锁的ID,在锁标记文件中记录有加锁时间、代码文件名与加锁的代码的行号;并在锁流水文件中写入本次锁定的信息相关的内容,并储存。本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码以及锁的状态。
所述锁的状态通常有两种:锁定与解锁,加锁时,锁的状态为锁定,解锁时,锁的状态为解锁。
本实施例中,使用锁流水文件记录锁的历史情况,因此可以预设好锁文件夹,将锁流水文件置于其中。为便于工作人员分析锁的情况,将锁标记文件也置于同一个锁跟踪文件夹内。
某些实施例中,没有采用锁流水文件,而单独使用锁标记文件对锁的情况进行分析,此时,在启动程序时,可以根据预设的方案,根据指定路径生成一个锁跟踪文件夹,将锁标记文件生成在该文件夹内。
S103解锁时,根据解锁的锁的ID,删除相应的锁标记文件,并在锁流水文件中写入本次解锁的信息相关的内容,,并储存。本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码与锁的状态。
锁定或解锁信息相关内容可以直接是锁的ID、加锁/解锁时间、代码文件名、加锁/解锁的代码以及锁的状态。也可以是上述信息根据一定的规则变换后的内容,总之,只要能使分析人员根据相关内容解读出锁的ID、加锁/解锁时间、代码文件名、加锁/解锁的代码以及锁的状态即可。
锁流水文件与锁标记文件也可以置于设定的其他的路径内。例如某个盘符下的根目录中。若程序有其对应的锁跟踪文件夹会便于分析人员分析与查找,例如我们可以在程序的运行目录,或者其它位置,生成一个锁跟踪文件夹。
如lock_trace,
文件夹里面,有两种类型文件,总体的流水文件和单个锁的标记文件。
锁流水文件:里面有所有锁的流水账。
内容如:
0x3f7789(随机锁ID),xxyyzz.c(代码文件名),555(行号),2013-03-03 15:01:02.005(时间),Lock(锁定)
0x3f7789(随机锁ID),xxyyzz.c(代码文件名),577(行号),2013-03-03 15:01:07.005(时间),Lock(解锁)
在每一次锁定或者解锁的时候,都会增加一行类似的内容。
这个文件的作用在于,记录每一次的加锁和解锁,在***运行后,可以利用这个文件分析各个锁的占用情况。
锁标记文件:在每一次加锁的时候会在lock_trace文件夹下会生成一个文件,文件名是锁的随机ID。在解锁的时候,这个文件会被删除
设计标记文件的目的在于,在程序出现死锁可能的时候,立刻在线查看lock_trace文件,如果有发现标记文件存在,则说明锁定还未解除,直接打开标记文件,查看锁的位置。
锁标记文件的内容大体如下
xxyyzz.c(代码文件名),577(行号),2013-03-03 15:01:07.005(时间)
设计所有共享锁的锁定和解锁函数,成套的设计,如Lock与Unlock
Lock函数的要求是,执行以下任务:
1)生成锁的ID,可以是根据时间生成随机数;
2)记录当前代码文件名与行号;
3)记录锁定的时间;
4)加锁。
Unlock函数所执行的任务是:
1) 删除Lock函数生成的文件;
2) 解锁。
在不同的实施例中,锁流水文件与锁标记文件可以分别单独使用。不过将二者结合起来,可以更方便地分析判断***中锁异常的情况。***出现死锁可能的情况下,直接打开lock_trace目录,即可肉眼来观察死锁位置。同时还可以根据流水文件来分析锁的详细信息。
如图2所示,本实施例提供了一种检测锁异常的装置20,该装置可以是PC、服务器或其他电子设备,包括以下模块:
存储模块204,用于存储锁标记文件与锁流水文件;
启动模块201,用于启动程序,创立锁跟踪文件夹,所述锁跟踪文件夹存储于存储模块中;
锁定模块202,用于锁定程序时,生成锁的ID,在在锁跟踪文件夹内生成锁标记文件,锁标记文件的文件名为锁的ID,其内容为加锁时间、代码文件名以及加锁的代码的行号;在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态;
解锁模块203,用于解锁时,根据解锁的锁的ID,删除相应的锁标记文件。解锁模块还用于解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种检测锁异常的方法,包括以下步骤:
启动程序;
锁定程序时,生成锁的ID,在设定的路径内生成锁标记文件,锁标记文件的内容或文件名与锁的ID、加锁时间、代码文件名或加锁的代码的行号相关;
解锁时,根据解锁的锁的ID,删除相应的锁标记文件。
2.根据权利要求1所述的检测锁异常的方法,其特征在于,在步骤启动程序后,进行步骤:
创立锁跟踪文件夹;
锁定程序时,在锁跟踪文件夹内生成锁标记文件。
3.根据权利要求1所述的检测锁异常的方法,其特征在于,在锁定程序,生成锁的ID时,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态,并储存;
解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态,并储存。
4.根据权利要求3所述的检测锁异常的方法,其特征在于,所述锁流水文件与锁标记文件位于同一文件夹内。
5.一种检测锁异常的方法,包括以下步骤:
启动程序;
锁定程序时,生成锁的ID,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态,并储存;
解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态,并储存。
6.一种检测锁异常的装置,包括以下模块:
存储模块,用于存储锁标记文件;
启动模块,用于启动程序;
锁定模块,用于锁定程序时,生成锁的ID,在设定的路径内生成锁标记文件,锁标记文件的内容或文件名与锁的ID、加锁时间、代码文件名或加锁的代码的行号相关;
解锁模块,用于解锁时,根据解锁的锁的ID,删除相应的锁标记文件。
7.根据权利要求6所述的检测锁异常的装置,其特征在于,所述检测锁异常的装置中,
启动模块还用于创立锁跟踪文件夹,所述锁跟踪文件夹存储于存储模块中;
锁定模块用于锁定程序时,在锁跟踪文件夹内生成锁标记文件。
8.根据权利要求6所述的检测锁异常的装置,其特征在于,锁定模块还用于在锁定程序,生成锁的ID时,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态;
解锁模块还用于解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态;
所述锁流水文件存储于存储模块中。
9.根据权利要求8所述的检测锁异常的装置,其特征在于,所述锁流水文件与锁标记文件位于存储模块的同一文件夹内。
10.一种检测锁异常的装置,包括以下模块:
启动模块,用于启动程序;
锁定模块,用于锁定程序时,生成锁的ID,在锁流水文件中写入本次锁定的信息相关的内容,本次锁定的信息包括锁的ID、加锁时间、代码文件名、加锁的代码或锁的状态;
解锁模块,用于解锁时,在锁流水文件中写入本次解锁的信息相关的内容,本次解锁的信息包括锁的ID、解锁时间、代码文件名、解锁的代码或锁的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102214778A CN103279417A (zh) | 2013-06-05 | 2013-06-05 | 检测锁异常的方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013102214778A CN103279417A (zh) | 2013-06-05 | 2013-06-05 | 检测锁异常的方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103279417A true CN103279417A (zh) | 2013-09-04 |
Family
ID=49061946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013102214778A Pending CN103279417A (zh) | 2013-06-05 | 2013-06-05 | 检测锁异常的方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103279417A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089926A (zh) * | 2018-01-08 | 2018-05-29 | 马上消费金融股份有限公司 | 一种获取分布式锁的方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816430A (ja) * | 1994-06-27 | 1996-01-19 | Mitsubishi Electric Corp | 並列プログラムトレース装置 |
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其*** |
CN101295266A (zh) * | 2008-06-05 | 2008-10-29 | 华为技术有限公司 | 检测和解除死锁的方法、装置和*** |
US20100333110A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Deadlock detection method and system for parallel programs |
-
2013
- 2013-06-05 CN CN2013102214778A patent/CN103279417A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0816430A (ja) * | 1994-06-27 | 1996-01-19 | Mitsubishi Electric Corp | 並列プログラムトレース装置 |
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其*** |
CN101295266A (zh) * | 2008-06-05 | 2008-10-29 | 华为技术有限公司 | 检测和解除死锁的方法、装置和*** |
US20100333110A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Deadlock detection method and system for parallel programs |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108089926A (zh) * | 2018-01-08 | 2018-05-29 | 马上消费金融股份有限公司 | 一种获取分布式锁的方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111756575B (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
US8060795B2 (en) | Solution for automatically incorporating diagnostic data within screen capture images | |
US9229738B2 (en) | Software development tool for providing user context information to improve message quality at development time | |
US8291379B2 (en) | Runtime analysis of a computer program to identify improper memory accesses that cause further problems | |
US10235234B2 (en) | Method and apparatus for determining failure similarity in computing device | |
US8881296B2 (en) | Marking and obscuring sensitive values in traces | |
CN107688531A (zh) | 数据库集成测试方法、装置、计算机设备及存储介质 | |
US20080244332A1 (en) | Machine instruction level race condition detection | |
Sutherland et al. | Acquiring volatile operating system data tools and techniques | |
US10657028B2 (en) | Method for replicating production behaviours in a development environment | |
CN103577310A (zh) | 记录软件调试日志的方法以及装置 | |
Xu | System problem detection by mining console logs | |
Huang et al. | Scaling predictive analysis of concurrent programs by removing trace redundancy | |
WO2014190427A1 (en) | Identifying client states | |
Cai et al. | Lock trace reduction for multithreaded programs | |
CN107908490A (zh) | 一种服务器dc测试中gpu寄存器可靠性验证方法与*** | |
CN113569234B (zh) | 一种用于安卓攻击场景重建的可视化取证***及实现方法 | |
CN103279417A (zh) | 检测锁异常的方法与装置 | |
Didriksen | Forensic analysis of OOXML documents | |
Fairbanks | A technique for measuring data persistence using the ext4 file system journal | |
Buquerin et al. | Digital forensics investigation of the tesla autopilot file system,” | |
CN113641628B (zh) | 数据质量检测方法、装置、设备及存储介质 | |
JP5592828B2 (ja) | パッチ影響解析装置、方法及びプログラム | |
CN107656868B (zh) | 一种利用线程私有数据获取线程名字的调试方法及*** | |
Khanji et al. | Database auditing and forensics: Exploration and evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 350000 Fuzhou Gulou District, Fujian, software Avenue, building 89, No. 18 Applicant after: FUZHOU ROCKCHIP ELECTRONICS CO., LTD. Address before: 350000 Fuzhou Gulou District, Fujian, software Avenue, building 89, No. 18 Applicant before: Fuzhou Rockchip Semiconductor Co., Ltd. |
|
COR | Change of bibliographic data | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20130904 |
|
RJ01 | Rejection of invention patent application after publication |