欢迎来到天天文库
浏览记录
ID:21720050
大小:65.50 KB
页数:7页
时间:2018-10-24
《程序调试gdb学习查询》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在GCC中,-g选项可以生成的可执行程序中加入调试信息。调试信息保存在目标文件中,它描述的内容包括变量的数据类型,函数的原型声明,程序符号表,行号,与指令之间的对应关系,等等。-g完整形式是-glevel,其中,level中指定了调试信息中包括了调试信息的多少,默认的是2,1最少,level=3最多。gdb调试基本知识a.调试器指示的是将要执行的代码行b.只有在编译时拥有调试符号(-g)的程序才能在调试时看到源码c.同一行上有多个断点时,gdb仅中断在断点号最小的那个断点上d.断点可以设置在同一程序的不同文件中e.在任何给定时间,gdb只有一个焦点,即当前“活动”的文件f.源文件改变
2、后,断点发生移动,带式断点属性的行号不变二、GDB基本命令清单查询在 gdb 提示符处键入help,将列出命令的分类,主要的分类有: * aliases:命令别名 * breakpoints:断点定义; * data:数据查看; * files:指定并查看文件; * internals:维护命令; * running:程序执行; * stack:调用栈查看; * statu:状态查看; * tracepoints:跟踪程序执行。 键入 help 后跟命令的分类名(如help aliases),可获得该类命令的详细清单。三、GDB基本命令用法1、运行退出run(简写r):执行程序(gd
3、b)run app [argv1] [argv2] ...run命令后可跟随发给该程序的任何参数,包括标准输入和标准输出说明符(<和>)和外壳通配符(*、?、[、])在内。 如果使用不带参数的run命令,gdb就再次使用前一条run命令的参数。set args:设定传递给程序的参数(gdb)set args [argv1] [argv2] ...show args:查看其缺省参数的列表 (gdb)show args kill(简写k):异常终止在gdb 控制下运行的程序(gdb)killquit(简写q):退出gdb(gdb)quit2、查看信息list(简写l):查看源码(gdb)
4、 list line_num或l line_num,line_num为行号。 pirnt(简写p):print var:查看变量var的值。 (gdb) print var可以通过添加参数来设置输出格式:/x 按十六进制格式显示变量/d 按十进制格式显示变量/u 按十六进制格式显示无符号整型/o 按八进制格式显示变量/t 按二进制格式显示变量/a 按十六进制格式显示变量/c 按字符格式显示变量/f 按浮点数格式显示变量例如:print /x varprint可以显示被调试的语言中任何有效的表达式。表达式除了包含程序中的变量外,还可以包含以下内容:a).对程序中函数的调用 (gdb)
5、print find_entry(1,0) b).数据结构和其他复杂对象 (gdb) print *table_start $8={e=reference=’ 00’,location=0x0,next=0x0} c).值的历史成分 (gdb)print $1 ($1为历史记录变量,在以后可以直接引用 $1 的值) d).人为数组 人为数组提供了一种去显示存储器块(数组节或动态分配的存储区)内容的方法。早期的调试程序没有很好的方法将任意的指针换成一个数组。就像对待参数一样,让我们查看内存中在变量h后面的10个整数,一个动态数组的语法如下所示: base@length 因此,要想显示
6、在h后面的10个元素,可以使用h@10: (gdb)print h@10 $13=(-1,345,23,-234,0,0,0,98,345,10) e).给变量赋值print除了显示一个变量的值外,还可以用来赋值,如:(gdb)print var=1info(简写i):info break:显示断点信息,下面断点部分详述。(gdb)info breakinfo local:显示当前函数中的局部变量信息。(gdb)info localinfo var:系那是所有的全局和静态变量名称。(gdb)info varinfo func:显示所有的函数名称。(gdb)info funcinfo
7、prog:显示被调试程序的执行状态。(gdb)info proginfo files:显示被调试文件的详细信息。(gdb)info fileswhatis:显示变量的类型 如程序中定义struct timeval var;(gdb) whatis var type = struct timevalinforregisters:查看寄存器信息ptype:比whatis的功能更强,它可以提供一个结构的定义(gdb)ptype vartype = struct
此文档下载收益归作者所有