1.如何进入gdb
编译时,需要有相应的参数设置
cmakelists中的设置如下:
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
或者是在编译生成可执行文件的时候:
gcc -g xxx.c -o xxx.o
得到相应的可执行文件后,在终端运行
gdb xxx.o
2.进一步调试
进入gdb模式后,终端会变成下面这样子以及一些常用指令
(gdb)
(gdb)set args a b c //设置运行参数
(gdb)r //运行程序
(gdb)l //查看10行代码,每次l一次显示10行
(gdb)break 16 //在第16行设置断点
(gdb)break 16 if n==9 //在一定条件下执行断点,n是代码里的变量
(gdb)info breakpoints //查看所有断点信息
(gdb)disable 16 //暂时不执行16行处断点,但是该断点还在
(gdb)clear 16 //去除断点
(gdb)delete //删除所有断点
(gdb)continue //继续运行
(gdb)next //继续执行下一条语句,不进入func函数
(gdb)step //继续执行下一条,但是会进入函数内部
(gdb)print n //打印变量n
(gdb)finish //结束本次执行
(gdb)q //退出gdb
(gdb)bt //!!代码报错停止时,可以用这个查看调用关系以及出错位置