![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/49d261beded75c6cdaebce17f86fffbc.png)
mkdir build
cd build
cmake ..
make
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/90bd3b0a86e534100198779cca99ac5f.png)
gcc -g file.c -o filename
g++ -g file.cpp filename
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4020661ad8d1c7f45ac670f1a900eeab.png)
在使用GDB的过程中,使用ctrl+x,ctrl+a可以切换成上面是源文件的格式,然后方便进行调试
运行程序使用run命令或者使用简写r
查看变量数值:print var1(或者使用简写p var)
设置断点:
break 21 第21行
break fun 在fun处设置断点(也常常用命名空间::类名::函数名称)
continue 继续执行,直到下次断点
next 单步执行 之后通过回车键来进行单步的执行(简写为n)
设置断点触发条件:break 21 if var1==var2
查看断点信息info b或者是info break
跳出循环的方法:UNTIL 行号
bt查看函数的堆栈
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fbcbcd187e082e1fab2e5a7accf8c603.png)
PROJECT(test) #项目的名称
CMAKE_MINIMUM_REQUIRED(VERSION 2.6) #最低的Cmake版本要求
AUX_SOURCE_DIRECTORY(. DIR_SRCS) # 将所有的源文件变量放进变量中,这个更多的用在指明文件上
SET(FRAME_PATH ../frame) #设置环境变量,这个更多的是用在了路径变量上
#设置进行编译时候的命令,这里分出来两个(DEBUG和RELEASE)
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE -O0 -W -g -DDEBUG_CHG")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGE_FILE -O3 -w -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -lpthread")
#指明build_type
SET(CMAKE_BUILD_TYPE "Release
#这个部分声明指明了编译条件
IF (CMAKE_BUILD_TYPE STREQUAL "Debug") #if语句
MESSAGE(STATUS "Debug Mode")
MESSAGE(STATUS "Flags:" ${CMAKE_CXX_FLAGS_DEBUG} )
ELSEIF (CMAKE_BUILD_TYPE STREQUAL "Release")
MESSAGE(STATUS "Release Mode")
MESSAGE(STATUS "Flags:" ${CMAKE_CXX_FLAGS_RELEASE})
ENDIF (CMAKE_BUILD_TYPE STREQUAL "Debug")
")
# 设置链接的库 存在变量中(这个是项目使用的,前提是确保让程序可以找到这个库,比如使用系统的环境变量导出)
SET(LD_LIBS
hiredis
glog
tcmalloc_minimal
)
SET(BOOST_LIBS
boost_filesystem.a
boost_thread.a
boost_system.a
boost_regex.a
boost_serialization.a
)
INCLUDE_DIRECTORIES( #头文件所在的路径
./
./test/include
./reco
$ {FRAME_PATH}
)
ADD_EXECUTABLE(test #添加要编译的可执行文件
${HTTP_SERVER_SRCS}
${SEGMENT_SRCS}
${SERVERS_SRCS}
)
# 实际进行链接的命令
TARGET_LINK_LIBRARIES( test ${LD_LIBS} ) #添加可执行文件所需要的库,比如我们用到了libm.so(命名规则:lib+name+.so),就添加该库的名称
TARGET_LINK_LIBRARIES( test ${BOOST_LIBS} )
SET(EXECUTABLE_OUTPUT_PATH ./bin) #设置输出的可执行的文件的路径
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/41ac839d7a2182e3c113182526d76368.png)