linux基础5-gdb调试

上传人:j7****6 文档编号:62239092 上传时间:2018-12-18 格式:PPT 页数:19 大小:362KB
返回 下载 相关 举报
linux基础5-gdb调试_第1页
第1页 / 共19页
linux基础5-gdb调试_第2页
第2页 / 共19页
linux基础5-gdb调试_第3页
第3页 / 共19页
linux基础5-gdb调试_第4页
第4页 / 共19页
linux基础5-gdb调试_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《linux基础5-gdb调试》由会员分享,可在线阅读,更多相关《linux基础5-gdb调试(19页珍藏版)》请在金锄头文库上搜索。

1、LINUX基础-gdb,什么是gdb,GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、VB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。,gdb程序调试工具,程序中的错误按其性质可分为三种: (1)编译错误,即语法错误。主要是程序代码中有不符合所用编程语言语法规则的错误。 (2)运行错误。如对负数开平方,除数为0,循环终止条件永远不能达到等 。 (3)逻辑错误。这类错误往往是编程前对求解的问题理解不正确或算法不正确引起的,它们

2、很难查找, (数组越界、空指针) 查找程序中的错误,诊断其准确位置,并予以改正,这就是程序调试。程序调试分为人工查错与机器调试。 gdb主要帮助用户在调试程序时完成四方面的工作: (1)启动程序,可以按用户要求影响程序的运行行为。 (2)使运行程序在指定条件处停止。 (3)当程序停止时,检查它出现了什么问题。 (4)动态改变程序的执行环境,这样就可以纠正一个错误的影响,然后再纠正其他错误。,如何开启GDB,为了发挥gdb的全部功能,需要在编译源程序时使用-g选项 $ gcc g test.c o proc 启动gdb,以参数形式将可执行程序传递给gdb $ gdb proc 启动gdb后就显示

3、其提示符:(gdb),并等待用户输入相应的内部命令。 用户可以利用命令quit终止其执行,退出gdb环境。,gdb界面,gdb程序控制命令,1设置断点 编译源程序时需要使用-g选项 在gdb中用break命令(其缩写形式为b)设置断点: break linenum (在当前文件指定行linenum处设置断点,停在该行开头) break linenum if condition (在当前文件指定行linenum处设置断点,但仅在条件表达式condition成立时才停止程序执行) break function (在当前文件函数function的入口处设置断点) break file:linenum

4、 (在源文件file的linenum行上设置断点) break file:function (在源文件file的函数function的入口处设置断点) break *address (运行程序在指定的内存地址address处停止) break (不带任何参数,则表示在下一条指令处停止) 断点应设置在可执行的行上,不应是变量定义之类的语句。,gdb程序控制命令,2. 显示断点 info breakpoints num info break num 3删除断点 delete bkptnums 4运行程序 run args (run简写是r) 5程序的单步跟踪和连续执行 (1)单步跟踪 step N

5、 参数N表示每步执行的语句行数。 进入被调用函数内部执行。 next N 参数N表示每步执行的语句行数。 被调用函数被当做一条指令执行。 stepi(缩写为si)或nexti(缩写为ni)命令一条一条地执行机器指令。 (2)连续执行 利用continue,c或fg命令连续执行到下一个断点 。,gdb的命令 显示 list,显示源文件命令list (l),set listsize linenum : 可以使用该命令设置一次显示的行数,gdb的命令 搜索 search,搜索命令search,gdb的命令 查看 print,查看运行时数据(p) (1)print命令 当被调试的程序停止时,可以用pr

6、int命令或同义命令inspect来查看当前程序中运行的数据。 print命令的一般使用格式:print /fmt exp print i (或p i) 显示当前变量i的值。 print i*j (或p i*j) 将根据程序当前运行的实际情况显示出i*j的值。 (2)print所支持的运算符 1.取地址&符号 2. 是一个与数组有关的双目运算符,使用形式如 print array10 打印从array(数组名,即数组的基地址)开始的10个值。 print array35 打印从array第三个元素开始的5个数组元素的数值。 3.file:i 或 function :i 表示文件或者函数中i的值

7、,gdb的命令 路径相关命令,(1)directory命令 将给定目录dir添加到源文件搜索路径的开头,并且忽略先前保存的有关源文件和代码行位置的信息。其一般格式是: directory dir 或者 dir dir (2)cd命令 cd命令将调试程序和被调试程序的工作目录置为指定的目录dir。其使用格式为: cd dir (3)path命令 利用path命令可以将一个或多个目录添加到目标文件搜索路径的开头。其使用格式是: path dirs (4)pwd命令 该命令用来显示工作目录。 (5)show directories命令 该命令显示定义的源文件搜索路径。 (6)show paths命令

8、 该命令显示当前查找目标文件的搜索路径,gdb的命令 其它常用命令,1执行shell命令 shell command-string 例如: (gdb) shell date 2009年 03月 31日 星期二 16:47:56 CST (gdb) 2修改变量值 (gdb) print x=10 (gdb) set variable x=10 3跳转执行 jump linenum (参数linenum表示下一条语句的行号。) jump *addr (参数 addr表示下一条代码行的内存地址。,应用示例,带-g的gcc编译,执行:,启动GDB:,命令r,执行程序,命令l 1, 25 查看所有内容,命令b 设置断点,查看数组的内存空间分配情况,我们查看数组fary元素地址的情况,再查看ary10后面的10个元素值,结论,可以看出,ary后10个元素的值是正确的。表明:fary数组的空间没有把ary数组全部覆盖掉,只是覆盖了ary数组前面10个元素的空间。 把源程序中BIGNUM的宏扩展值改为10,重新编译、运行,并检查结果,会发现都正确了。,作业,将以前写过的程序(正确的或者错误的), 加入-g参数进行调试,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号