2018年10月10日
gdb调试
Bash
gdb 调试
进行gdb调试前首先安装gdb<apt-get install gdb>, gcc/g++编译时需要添加-g选项
进入gdb之后的明林可以简写输入:l/list b/break r/run n/next p/print i/info q/quit等
注意linux的显示艺术“<>”代表必须输入参数,“[]”代表可选输入参数,很多地方都是如此。
release:
gcc -O2 -std=c99 -o apprelease.out app.c
g++ -O2 -std=c++11 -o apprelease.out app.cpp
debug:
gcc -g -o -std=c99 appdebug.out app.c
g++ -g -std=c++11 -o appdebug.out app.cpp
gdb appdebug.out
list 显示源文件:
list 没有参数,显示当前行之后或周围的10多行
list start,end 显示从行号start到end之间的代码行。
break 设置断点
break linenum 在当前文件指定行linenum处设置断点
break function 在当前文件函数function的入口处设置断点
run 运行程序
step 单步跟踪
step [N] 如果遇到函数调用,并且该函数编译时有调试信息,则会进入该函数内执行。
next [N] 遇到函数调用时,执行整个函数。
print 查看运行时的数据
print i 显示当前变量i的值
print &i 显示变量i的存放地址
print array@5 显示从array(数组名)开始的5个值
print array[2]@3 显示从array第二个元素开始的3个数组元素的值
whatis i 显示变量i的数据类型
info 显示断点
info breakpoints/break/watchpoints [num] 例如: i b
continue 连续执行
continue 从当前行开始,连续执行到下一个断点处,或者到达该程序结束。命令中可以给出一个数字N,忽略其后N-1次断点
clear(清除所有已定义的断点)
delete(删除所有断点,后面可给出断点号码,多个断点用空格分开)
disable(停用指定断点,停用多个则用空格分开)
enable(激活被停用的断点,各断点号码用空格分开)