linux下的C++程序调试过程笔记:CMAKE+GDB

在这里插入图片描述

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)  #设置输出的可执行的文件的路径

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值