mkdir build
cd build
cmake ..
make
gcc -g file.c -o filename
g;; -g file.cpp filename
在使用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查看函数的堆栈
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) #设置输出的可执行的文件的路径