嵌入式Linux上的C语言编程实践--第6章GDB调试工具教案详解.ppt
文本预览下载声明
6.1 GDB简介 GDB--GNU Debugger,是FSF的一个强大的命令行调试工具。虽然,它没有图形化的友好界面,但是它强大的功能也足以与微软的VC工具等媲美。 主要提供4个方面的功能: 指定启动程序的方式 可以在被调试的程序中设置断点,断点可以设置在程序源文件中的某一行、某函数的入口或满足某各条件时。 当程序被停住时,可以检查此时程序中所发生的事件 可以动态改变程序的执行环境。 6.1 GDB简介 GDB是一个命令行工具,其常用启动格式如下: gdb [executable-file] 使用GDB调试程序的注意事项: 在对源程序编译时要加-g选项,以使编译出来的程序中包含需要的调试信息。 在对源程序编译时最好不要对程序进行优化编译。 由于编译器在目标文件和可执行文件中加入了对源代码的引用,所以,为保证调试信息可用,源代码必须存在,且路径不能改变 6.1 GDB简介 例如: [root@jHL-RHL 6.3]# gdb hello GNU gdb Red Hat Linux (5.3post-018rh) Copyright 2003 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions.Type show copying to see the conditions. There is absolutely no warranty for GDB. Type show warranty for details. This GDB was configured as i386-redhat-linux-gnu... (gdb) ?GDB的提示符 6.1 GDB简介 GDB中的常用命令如下: 6.1 GDB简介 GDB中的常用命令如下: 6.2 使用GDB调试程序 6.2.1 基本操作 使用-g选项进行编译: gcc –g –Wall gcb_test.c –o gdb_test 启动并载入生成的可执行程序: gdb 可执行文件名 如 gdb gdb_test 在main函数入口点设置断点: break 函数名 如 break main 或 b main break 行号 如 break 34 使用run命令运行程序,将在断点处停下。 run 或 r run 参数表 参数表相当于命令行参数 使用next命令,可从断点处执行一行(不进入函数) next count 或 n count 使用step命令,可从断点处执行一行(进入函数) step count 或 s count 使用continue可恢复中断了的程序继续运行直到下一断点或程序结束。 continue 或 c continue ignore-count继续运行,并忽略后面若干断点 6.2.2 查看命令 list命令--查看源程序 list 行号--显示批定行号周围的源程序 list 函数名--显示指定函数代码 list—接着前一list命令继续显示源程序 where命令—查看当前程序运行位置 where print命令—查看程序中变量的值 print 变量名/ 数组名[下标]—显示指定变量或数组元素的值。 print 数组名[下标]@n--显示数组中从指定元素开始的n个元素的值。 whatis命令—查看变量的类型 whatis 变量名/函数名/数组名 ptype命令—查看变量的类型 ptype 变量名/函数名/数组名,此命令与whatis命令基本相同,只是能更好的显示结构体变量或数组的类型。 clear命令—清除断点 clear 行号/函数名 清除指定行或函数上的断点 delete命令—清除断点 delete--清除所有断点 delete 断点号--清除指定的断点 6.2.3 高级命令 设置条件断点: Break 行号 if 条件 如:break 21 if i=3,表示执行到第21行且i的值为3时停下。 condition breaknum exp--修改指定断点号处的停止条件为exp,无exp则删除条件 自动化调试 可以使用GDB提供的command命令来设置在停止点停止后运行的命令。也就是说,当运行的程序在被停止住时,我们可以让GDB自动运行一些别的命令。 commands命令的格式为: commands[bnum] command list
显示全部