Linux基础5-gdb调试.ppt_第1页
Linux基础5-gdb调试.ppt_第2页
Linux基础5-gdb调试.ppt_第3页
Linux基础5-gdb调试.ppt_第4页
Linux基础5-gdb调试.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LINUX基础-gdb,什么是gdb,GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、VB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。,gdb程序调试工具,程序中的错误按其性质可分为三种:(1)编译错误,即语法错误。主要是程序代码中有不符合所用编程语言语法规则的错误。(2)运行错误。如对负数开平方,除数为0,循环终止条件永远不能达到等。(3)逻辑错误。这类错误往往是编程前对求解的问题理解不正确或算法不正确引起的,它们很难查找,(数组越界、空指针)查找程序中的错误,诊断其准确位置,并予以改正,这就是程序调试。程序调试分为人工查错与机器调试。gdb主要帮助用户在调试程序时完成四方面的工作:(1)启动程序,可以按用户要求影响程序的运行行为。(2)使运行程序在指定条件处停止。(3)当程序停止时,检查它出现了什么问题。(4)动态改变程序的执行环境,这样就可以纠正一个错误的影响,然后再纠正其他错误。,如何开启GDB,为了发挥gdb的全部功能,需要在编译源程序时使用-g选项$gccgtest.coproc启动gdb,以参数形式将可执行程序传递给gdb$gdbproc启动gdb后就显示其提示符:(gdb),并等待用户输入相应的内部命令。用户可以利用命令quit终止其执行,退出gdb环境。,gdb界面,gdb程序控制命令,1设置断点编译源程序时需要使用-g选项在gdb中用break命令(其缩写形式为b)设置断点:breaklinenum(在当前文件指定行linenum处设置断点,停在该行开头)breaklinenumifcondition(在当前文件指定行linenum处设置断点,但仅在条件表达式condition成立时才停止程序执行)breakfunction(在当前文件函数function的入口处设置断点)breakfile:linenum(在源文件file的linenum行上设置断点)breakfile:function(在源文件file的函数function的入口处设置断点)break*address(运行程序在指定的内存地址address处停止)break(不带任何参数,则表示在下一条指令处停止)断点应设置在可执行的行上,不应是变量定义之类的语句。,gdb程序控制命令,2.显示断点infobreakpointsnuminfobreaknum3删除断点deletebkptnums4运行程序runargs(run简写是r)5程序的单步跟踪和连续执行(1)单步跟踪stepN参数N表示每步执行的语句行数。进入被调用函数内部执行。nextN参数N表示每步执行的语句行数。被调用函数被当做一条指令执行。stepi(缩写为si)或nexti(缩写为ni)命令一条一条地执行机器指令。(2)连续执行利用continue,c或fg命令连续执行到下一个断点。,gdb的命令显示list,显示源文件命令list(l),setlistsizelinenum:可以使用该命令设置一次显示的行数,gdb的命令搜索search,搜索命令search,gdb的命令查看print,查看运行时数据(p)(1)print命令当被调试的程序停止时,可以用print命令或同义命令inspect来查看当前程序中运行的数据。print命令的一般使用格式:print/fmtexpprinti(或pi)显示当前变量i的值。printi*j(或pi*j)将根据程序当前运行的实际情况显示出i*j的值。(2)print所支持的运算符1.取地址&符号2.是一个与数组有关的双目运算符,使用形式如printarray10打印从array(数组名,即数组的基地址)开始的10个值。printarray35打印从array第三个元素开始的5个数组元素的数值。3.file:i或function:i表示文件或者函数中i的值,gdb的命令路径相关命令,(1)directory命令将给定目录dir添加到源文件搜索路径的开头,并且忽略先前保存的有关源文件和代码行位置的信息。其一般格式是:directorydir或者dirdir(2)cd命令cd命令将调试程序和被调试程序的工作目录置为指定的目录dir。其使用格式为:cddir(3)path命令利用path命令可以将一个或多个目录添加到目标文件搜索路径的开头。其使用格式是:pathdirs(4)pwd命令该命令用来显示工作目录。(5)showdirectories命令该命令显示定义的源文件搜索路径。(6)showpaths命令该命令显示当前查找目标文件的搜索路径,gdb的命令其它常用命令,1执行shell命令shellcommand-string例如:(gdb)shelldate2009年03月31日星期二16:47:56CST(gdb)2修改变量值(gdb)printx=10(gdb)setvariablex=103跳转执行jumplinenum(参数linenum表示下一条语句的行号。)jump*addr(参数addr表示下一条代码行的内存地址。,应用示例,带-g的gcc编译,执行:,启动GDB:,命令r,执行程序,命令l1,25查看所有内容,命令b设置断点,查看数组的内存空间分配情况,我们查看数组fary元素地址的情况,再查看ary10后面的10个元素值,结论,可以看出,ary后10个元素的值是正确的。表明:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论