Linux 应用程序调试技术的研究.pdf

Linux 应用程序调试技术的研究.pdf

ID:52954587

大小:162.16 KB

页数:5页

时间:2020-04-03

Linux 应用程序调试技术的研究.pdf_第1页
Linux 应用程序调试技术的研究.pdf_第2页
Linux 应用程序调试技术的研究.pdf_第3页
Linux 应用程序调试技术的研究.pdf_第4页
Linux 应用程序调试技术的研究.pdf_第5页
资源描述:

《Linux 应用程序调试技术的研究.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux应用程序调试技术的研究彭闻宇,陈朔鹰(北京理工大学计算机学院,北京市海淀区100081)[摘要]本文介绍了C/C++函数调用机制,由此引入堆栈回朔(StackBacktraces)方法,通过从用户堆栈中提取出执行程序的函数调用序列,迅速定位程序异常发生的位置。同时,论文结合Linux信号机制,剖析了Linux内核的核心转储(CoreDump)机制,当程序异常终止时,核心转储机制会自动将程序运行的上下文和现场信息转储到文件中,然后交由GDB进行分析。最后,本文通过比较上述两种方法的优劣,提出并实现了一种轻量级的Linux应用程序调

2、试模型——CrashTrace。该模型借鉴了堆栈回朔的基本思想,并采纳了核心转储的基本原理,为桌面Linux和嵌入式Linux系统的应用程序调试提供了新的解决方案。[关键词]Linux调试技术,堆栈回朔,核心转储,CrashTrace中图分类号:TP319文献标识码:ALinuxApplicationDebuggingTechniquesInvestigationPengWenyu,ChenShuoying(Dept.ofComputerScienceandEngineering,BeijingInstituteofTechnology,

3、BeijingHaidian100081)[Abstract]Afteraprogramhascrashed,itisvitaltoreconstructwhythefailureoccurred,orwhatactionsledtotheerror.Inthispaper,itfirstlyintroducestwodifferentdebuggingtechniquesforLinuxapplication:StackBacktracesandCoreDump.BasedonC/C++functioncallmechanism,Sta

4、ckBacktracesconstructtheapplication'scalltracefromstacktoreproduceitsexecutionpathandfindoutwhatwentwrongandwhere.ComparedtoStackBacktraces,CoreDumpactsasaninlineapproachinLinuxkernelandprovidesapowerfulabilitytocollectinformationthatrepresentsthefinalsnapshotofexecutions

5、tatewhentheprogramcrashed.Subsequentlythethesisproposesalightweightdebuggingmodule--CrashTrace,whichmainlyconsiderstheshortcomingoftheabovesolutionsandintergratestheirstrongpoint.Inadditon,itexplorestheimplementationofCrashTrace.[Keyword]LinuxDebugTechniques,StackBacktrac

6、es,CoreDump,CrashTrace一、引言本文立足于Linux应用程序调试技术的研究,首先介绍了C/C++函数调用机制,并由此引入基于glibc库的堆栈回朔(StackBacktraces)调试方法。然后,结合Linux的信号机制,分析了Linux内置的核心转储(CoreDump)调试技术。最后,通过比较前两种调试方法的优劣,取长补短,提出并实现了一种轻量级的Linux应用程序的调试模型——CrashTrace。二、堆栈回朔调试技术2.1函数调用(FunctionCalls)在应用程序执行过程中,如果发生函数调用,系统首先会将函

7、数调用的参数压入用户堆栈,然后压入函数调用的返回地址,最后执行被调用的函数,并在用户堆栈上保存被调用函数的局部变量。其中,一次函数调用对应的堆栈空间被称作是一个堆栈帧。当程序中嵌套多层函数调用时,系统将重复上述压栈过程,从而形成一个堆栈帧序列。不难想象,通过遍历上述堆栈帧序列,可以得到一条完整的函数调用链(函数调用序列),该方法被称之为堆栈回朔。-1-2.2堆栈回朔方法的基本原理众所周知,当Linux应用程序在执行过程中导致硬件或操作系统产生严重错误时,程序将被异常终止,即crash。此时,要查明程序crash的原因,最直接的方法就是打印

8、出程序的函数调用链,通过复现程序的执行序列,定位出异常发生的具体位置,从而找出程序中隐藏的bugs。那么,如何利用堆栈构造应用程序的函数调用链呢?由于堆栈的操作对硬件平台有很强的依赖性,所以C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。