操作方法
1.0如何使可执行程序变为可调试 gcc -g -o test test.c // -g 编译选项使test可执行程序拥有可调试属性
1.1如何启动gdb调试工具 a.启动gdb但不调试可执行文件:gdb 载入待调试文件:(gdb)file test b.启动gdb并调试可执行文件:gdb test c.其它启动方式暂不列举
1.2查看源程序代码 list <line-num> 显示指定行前后的代码 list <func> 显示函数代码 list 显示当前行前后的代码 list + 从当前行往后显示代码 list - 从当前行往前显示代码 list <first>,<last> 显示first行与last行之间的代码 list ,<last> 显示当前行到last行之间的代码 ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ 扩展: set listsize <count> 设置一次list命令显示代码的行数,默认设置显示10行 show listsize 查看当前设置listsize的值
1.3查看源代码的内存 info line [行号][函数名][文件名:行号][文件名:函数名]
1.4查看单个数据(如果编译器优化将一些变量优化掉可能导致查看不到) print <expr> //expr可是变量名,表达式 print /<format> <expr> //关于数据的显示格式暂且不讲 使用gdb的print查看程序运行时的数据,每个print都会被gdb记录下来,以$1、$2、$3……的方式为每一print命令编号,后面可以直接使用这个编号访问以前的表达式,如print $2。这样避免的重复输入表达式。 ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ p file::variable 查看文件作用于变量 p function::variable 查看函数作用域变量
1.5修改变量的值 print x=4 将x赋值为4并打印x的值 set var width=47 将width的值设置为47 ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ 补充:查看变量的类型 whatis varName 查看变量varName的类型
1.6查看连续内存空间的值 1.6.1动态分配的连续内存 int *array = (int*)malloc(…) print *array@len 注意是"*array"格式,len表示查看元素的个数 1.6.2静态数组 print 数组名
1.7自动显示的变量值的相关命令。已经设置后的变量,当每执行一个调试命令后会自动显示在调试界面中。 display <expr> 设置要自动显示值的变量 display /<fmt> <expr> 设置要自动显示的变量及数据的显示格式 ------ ------ ------ ------ ------ ------ ------ ------ ------ undisplay display <dnum> 删除一个自动显示变量 delete display <dnum> 删除一个自动显示变量 undisplay/delete display <dnum1~dnum5> 删除一个范围内的自动变量 ------ ------ ------ ------ ------ ------ ------ ------ ------ disable/enable display <dnum> 禁用/启用一个自动显示变量 ------ ------ ------ ------ ------ ------ ------ ------ ------ info display 查看设置的自动显示变量
方法/步骤2
2014年12月7日 第一更新