天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

支持內(nèi)存錯(cuò)誤檢測(cè)的改進(jìn)gdb調(diào)試器的設(shè)計(jì)與實(shí)現(xiàn)

發(fā)布時(shí)間:2018-08-30 10:19
【摘要】:C語(yǔ)言在各種系統(tǒng)軟件和應(yīng)用軟件的開發(fā)中有著廣泛的應(yīng)用,它的內(nèi)存管理機(jī)制和指針操作機(jī)制,大大提高了其表達(dá)能力和靈活性,但也導(dǎo)致了大量?jī)?nèi)存錯(cuò)誤的出現(xiàn),這些錯(cuò)誤不易重現(xiàn)且難以查找誘發(fā)錯(cuò)誤的原因,所以內(nèi)存錯(cuò)誤通常很難檢測(cè)。 目前的內(nèi)存錯(cuò)誤檢測(cè)方法根據(jù)是否需要執(zhí)行程序大致可以分為兩類:動(dòng)態(tài)方法和靜態(tài)方法。靜態(tài)方法不需要執(zhí)行程序,因此沒有執(zhí)行開銷,檢測(cè)效率高,但由于程序運(yùn)行過程中的不確定性和不可預(yù)測(cè)性,靜態(tài)方法不能準(zhǔn)確地把握內(nèi)存的實(shí)際運(yùn)行狀況,通常具有較高的誤報(bào)率和漏報(bào)率。動(dòng)態(tài)方法在程序執(zhí)行時(shí)收集信息,并由此定位到程序發(fā)生內(nèi)存錯(cuò)誤的位置。但動(dòng)態(tài)方法收集信息的方式一般是對(duì)程序的源代碼進(jìn)行插樁修改,這種改動(dòng)可能破壞程序的結(jié)構(gòu)并影響程序的功能。另外,現(xiàn)有的一些工具在靜態(tài)數(shù)組的越界訪問檢測(cè)方面并不理想。 針對(duì)以上問題,本文通過改進(jìn)gdb調(diào)試器,提出了在gdb調(diào)試器中實(shí)現(xiàn)內(nèi)存錯(cuò)誤檢測(cè)的解決方案。改進(jìn)后的gdb調(diào)試器可以在不修改任何源代碼的前提下,實(shí)現(xiàn)內(nèi)存越界訪問錯(cuò)誤和內(nèi)存泄露錯(cuò)誤的檢測(cè),而且擺脫了靜態(tài)方法產(chǎn)生的誤報(bào)問題。其設(shè)計(jì)思想是:1)改進(jìn)后的gdb調(diào)試器在調(diào)試程序的過程中,根據(jù)程序內(nèi)存分布的不同,采用不同的方法抓取程序中的內(nèi)存分配信息。2)根據(jù)此信息建立用于內(nèi)存越界訪問檢測(cè)的內(nèi)存調(diào)試符號(hào)表以及用于內(nèi)存泄露檢測(cè)的內(nèi)存泄露鏈表。3)基于gdb調(diào)試器的watchpoint原理,利用內(nèi)存調(diào)試符號(hào)表,對(duì)程序中的內(nèi)存分配塊進(jìn)行監(jiān)控,探測(cè)內(nèi)存越界訪問錯(cuò)誤;并在程序結(jié)束前分析內(nèi)存泄露鏈表,檢測(cè)程序是否產(chǎn)生了內(nèi)存泄露。4)通過進(jìn)一步與gdb調(diào)試器相結(jié)合,使其能夠定位程序中發(fā)生內(nèi)存錯(cuò)誤的位置。
[Abstract]:C language has been widely used in the development of various system software and application software. Its memory management mechanism and pointer operation mechanism greatly improve its expression ability and flexibility, but also lead to a large number of memory errors. These errors are difficult to reproduce and difficult to find to induce errors, so memory errors are often difficult to detect. Current memory error detection methods can be divided into two categories according to whether or not to execute programs: dynamic method and static method. The static method does not need to execute the program, so it has no execution overhead and high detection efficiency. However, because of the uncertainty and unpredictability in the process of running the program, the static method can not accurately grasp the actual running state of the memory. It usually has high false alarm rate and false alarm rate. The dynamic method gathers information during program execution and thus locates where a memory error occurred in the program. But the method of collecting information by dynamic method is to modify the source code of the program by inserting piles, which may destroy the structure of the program and affect the function of the program. In addition, some of the existing tools for static array cross-border access detection is not ideal. In view of the above problems, this paper proposes a solution to implement memory error detection in gdb debugger by improving the gdb debugger. The improved gdb debugger can detect memory access error and memory leak error without modifying any source code, and get rid of the false positive problem caused by static method. The design idea of the improved gdb debugger is: 1) in the process of debugging the program, according to the different memory distribution of the program, Different methods are used to capture the memory allocation information in the program. 2) based on this information, the memory debug symbol table for memory cross access detection and the memory leak chain table 3 for memory leak detection are established) based on the watchpoint principle of the gdb debugger. The memory debug symbol table is used to monitor the memory allocation block in the program, to detect the memory access error, and to analyze the memory leak list before the end of the program. By further combining with the gdb debugger, the program can locate the location where the memory error occurred in the program.
【學(xué)位授予單位】:南京大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2012
【分類號(hào)】:TP311.11;TP333.1

【參考文獻(xiàn)】

相關(guān)期刊論文 前4條

1 李吉;王雷;;C程序緩沖區(qū)溢出漏洞精確檢測(cè)方法[J];北京航空航天大學(xué)學(xué)報(bào);2008年03期

2 周曉宇,黃文偉,史亮,徐寶文;基于源代碼插樁的C程序內(nèi)存使用錯(cuò)誤動(dòng)態(tài)檢測(cè)[J];艦船電子工程;2004年06期

3 李倩;潘敏學(xué);李宣東;;內(nèi)存泄漏檢測(cè)工具與評(píng)估方法[J];計(jì)算機(jī)科學(xué)與探索;2010年01期

4 甘紅星;金大海;宮云戰(zhàn);;基于源代碼的內(nèi)存泄漏靜態(tài)分析方法[J];內(nèi)蒙古大學(xué)學(xué)報(bào)(自然科學(xué)版);2011年05期

相關(guān)博士學(xué)位論文 前1條

1 馬曉東;C程序內(nèi)存錯(cuò)誤靜態(tài)分析技術(shù)研究[D];國(guó)防科學(xué)技術(shù)大學(xué);2009年

相關(guān)碩士學(xué)位論文 前10條

1 陸晗;基于GNU的JTAG調(diào)試器的集成與設(shè)計(jì)[D];浙江大學(xué);2005年

2 樓永紅;面向嵌入式實(shí)時(shí)應(yīng)用的內(nèi)存管理技術(shù)研究[D];浙江大學(xué);2006年

3 龔偉;基于gdb的嵌入式系統(tǒng)調(diào)試器的設(shè)計(jì)與實(shí)現(xiàn)[D];電子科技大學(xué);2006年

4 欒紹楠;C/C++程序中指針有效性的靜態(tài)檢測(cè)[D];西安電子科技大學(xué);2006年

5 王文俊;C/C++程序緩沖區(qū)越界靜態(tài)檢測(cè)研究[D];西安電子科技大學(xué);2006年

6 羅琰;基于內(nèi)核模式下進(jìn)程快照的可回溯調(diào)試研究及初步實(shí)現(xiàn)[D];浙江大學(xué);2008年

7 王皓;一種內(nèi)存泄漏檢測(cè)技術(shù)的研究和實(shí)現(xiàn)[D];北京交通大學(xué);2008年

8 張超;COM組件棧緩沖區(qū)溢出漏洞檢測(cè)技術(shù)研究[D];華中科技大學(xué);2008年

9 柯平;內(nèi)存泄漏靜態(tài)檢測(cè)模型的設(shè)計(jì)與實(shí)現(xiàn)[D];北京郵電大學(xué);2009年

10 楊木葉;嵌入式交叉調(diào)試工具實(shí)現(xiàn)技術(shù)研究[D];華中科技大學(xué);2009年

,

本文編號(hào):2212776

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2212776.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶11c31***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com