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(激活被停用的断点,各断点号码用空格分开)