关于计算机应用技术方面论文范文例文,与Linuxx86平台下程序崩溃的调试方法量化相关硕士论文格式

时间:2020-07-05 作者:admin
后台-系统-系统设置-扩展变量-(内容页告位1-手机版)

本文关于计算机应用技术及程序及操作系统方面的免费优秀学术论文范文,关于计算机应用技术方面论文范文例文,与Linuxx86平台下程序崩溃的调试方法量化相关专科毕业论文范文,对不知道怎么写计算机应用技术论文范文课题研究的大学硕士、本科毕业论文开题报告范文和文献综述及职称论文的作为参考文献资料下载。

摘 要:Linux中的段错误是编程中经常遇到的问题,往往导致程序崩溃.本文对段错误产生的原因,结合程序运行的过程,对段错误进行量化分析.

关 键 词 :段错误;量化分析;程序调试

中图分类号:TP316.81

在Linux系统上做过程序开发的人一定都遇到过“段错误”(Segmentation fault),随之程序异常退出.初学编程的人往往对此束手无策,不知道发生了什么事情,应该如何进行调试.其实Linux下的段错误和Windows平台上臭名昭著的“该程序执行了非法操作,即将被关闭”错误本质上是相同的,绝大部分都是对内存的非法访问而导致的.

很多新手程序员对于段错误往往无从下手,或是只能通过原始的方式,例如在程序中添加许多的printf语句来跟踪程序的执行.这样往往效率低下,因此掌握一些调试技巧对于提高调试效率而言是十分重要的,使用正确的调试工具和方法往往能够事半功倍,帮助准确定位程序出错的地方,从而找到引发该错误的根本原因(root cause).

1.段错误产生的原因

在Linux下程序崩溃基本上都是由于内存非法访问造成的,当内存非法访问发生时,CPU会产生一个软中断信号,如SIGSEGV,而该软中断信号的默认处理就是程序退出并产生一个core dump文件,该文件保存了程序崩溃时的现场,包括CPU寄存器的值,内存栈和堆里的数据.这些数据加上程序的二进制文件(即编译后的可执行文件)和程序源代码就是我们进行分析的基础.

2.程序的运行过程

在调试程序之前我们需要了解一下我们的程序是怎么执行的.我们写的C源码经过编译链接后生成机器代码,也就是汇编指令组成的可执行文件,在Linux中是ELF(Executable and Linkable Format)格式的可执行文件.汇编指令对内存和寄存器进行操作.而在X86所有的寄存器中,EAX,EBP,ESP,EIP是几个最重要的寄存器.


计算机应用技术学术论文撰写格式
播放:21978次 评论:4295人

Linuxx86平台下程序崩溃的调试方法量化参考属性评定
有关论文范文主题研究: 关于计算机应用技术的文章 大学生适用: 在职研究生论文、硕士毕业论文
相关参考文献下载数量: 61 写作解决问题: 写作资料
毕业论文开题报告: 论文提纲、论文结论 职称论文适用: 职称评定、职称评副高
所属大学生专业类别: 写作资料 论文题目推荐度: 优秀选题

EAX:通用寄存器,并用于保存函数返回值.被调函数返回时将返回值放入EAX,调用者从EAX中获取返回值.

ESP:栈顶寄存器,指向工作栈的栈顶.每当进入一个函数时,会通过修改ESP在栈中开辟一块空间供本函数使用.当退出一个函数时,ESP会恢复原值.

EBP:栈底寄存器,指向当前函数的栈底.每当进入一个函数时,该函数会将原来的(即调用它的函数的)EBP保存在栈中,然后将原来的ESP作为新的EBP,即EBP指向当前函数的栈底.

EIP:当前正在执行的汇编指令的地址.

函数的进入和退出都对应着对程序工作栈的修改,需要特别注意的是在X86中,栈是往低地址方向增长.所以进入一个函数分配栈空间是对ESP进行减操作(sub),而退出一个函数时是进行加(add)操作.每个函数在栈上都有自己一块空间,称为该函数的栈帧(stack frame).如果函数f1()调用了f2(),目前正在执行函数f2()中的代码,那么工作栈将会有如图1的布局:

图1

表中的内存位置的写法是x86的基址寻址的表达方式(采用GDB使用的AT&T格式),例如-4(%esp)代表的是地址为ESP寄存器的值减去4的内存单元的值.

3.实例分析

我们来看一个经过简化的例子.我们有一个程序执行时出现崩溃,产生了core dump

后台-系统-系统设置-扩展变量-(内容页告位2-手机版)
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:123456789@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。
后台-系统-系统设置-扩展变量-(内容页告位3-手机版)