一.启动调试
在CmakeLists.txt中设置gdb指令:
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")
调试方式运行程序:
调试启动无参程序:
gdb helloworld
2.调试启动带参程序:
gdb helloworld
run 参数
或
gdb helloworld
set args 参数
run
调试已运行程序:
使用ps命令找到进程id:
ps -ef|grep 进程名
获取进程id后,使用attach方式调试进程:
gdb
(gdb)attach 进程id
二、断点设置
1.info breakpoints查看已设置的断点:
2.根据行号设置断点
b 9 #break 可简写为b
或
b test.c:9
则运行到第9行的时候会断住
3.根据函数名设置断点:将断点设置在函数处
b printNum
4.根据条件设置断点:
假设程序某处崩溃,怀疑崩溃的原因是某个地方出现了非期望的值,那么可以在这里使用条件设置断点
break test.c:23 if b==0
当在b等于0时,程序将会在第23行断住
它和condition有着类似的作用,假设上面的断点号为1,那么相当于:
condition 1 b==0
5.根据规则设置断点:
例如 rbreak printNum* 意思是对所有以printNum开头的函数都设置了断点