在cmake中要编译debug模式的话,在CMakeLists.txt中添加如下两行

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb ")
SET(CMAKE_CXX_FLAGS_RELEASE "${ENV{CXXFLAGS} -O3 -Wall")
然后,在编译的时候,使用如下命令:
cmake -DCMAKE_BUILD_TYPE=Debug/Release  path
第三个参数path是指项目的顶层路径
========================================================================
1.  cmake支持gdb的实现,
首先在CMakeLists.txt下加入
SET(CMAKE_BUILD_TYPE "Debug")
在下面加入:
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
原因是CMake 中有一个变量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。
当这个变量值为 Debug 的时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile;

2.  在GDB中间加入程序启动参数
比如我们需要调试一个可执行文件./a.out help
这时
$gdb ./a.out
进入到gdb的命令行模式下,然后:
(gdb) set args help
就能加上可执行文件需要的参数,如果要看argc[1]到argc[N]的参数,只需要
(gdb) show args

3. gdb中查看字符串,地址的操作,数据类型
比始有一个int型的变量i,相要知道他的相关信息,可以
(gdb) print i
打印出变量i的当前值
(gdb)x &i
与上面的命令等价。

如果有x命令看时,需要看一片内存区域,(如果某个地方的值为0,用x时会自动截断了)
(gdb) x/16bx address
单字节16进制打印address地址处的长度为16的空间的内存,16表示空间长度,不是16进制,x表示16进制,b表示byte单字节

gdb看变量是哪个数据类型
(gdb) whatis i
即可知道i是什么类型的变量
------------------------------------------------

cmake Debug模式和Release模式相关推荐

  1. 对VC++下Debug模式和Release模式的简要分析

    // // 备注:本篇文章来自 vc驿站:http://www.cctry.com/thread-254205-1-1.html // C.C++.VC++ 各种学习资源,免费教程,期待您的加入! / ...

  2. Debug模式和Release模式区别

    VC6.0中的Debug模式和Release模式区别         Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各 ...

  3. 基于C/C++在Debug模式与Release模式下相同的算法计算出来的结果不一样

    项目场景: TEA算法踩坑记,在Debug模式与Release模式下相同的算法计算出来的结果不一样. 在安全学领域,TEA(Tiny Encryption Algorithm)是一种分组加密算法,它的 ...

  4. React Native:判断RN项目是debug模式还是release模式方法

    判断项目是debug模式还是release模式的方法: if (__DEV__) {alert('debug模式')// debug模式 开发者模式} else {alert('release模式re ...

  5. C#:识别一个dll文件是Debug模式还是Release模式编译的

    2019独角兽企业重金招聘Python工程师标准>>> 今天遇到一个问题,就是在要确定一个C#项目中正在使用的一个dll文件是什么模式编译的.因为Debug和Release两种模式编 ...

  6. 关于Debug模式和Release模式

    使用VS的都知道,在编译的时候,会有debug和release俩中模式,那么这俩种模式到底有什么不同呢? 首先我们要明确的是Debug和Release模式并没有本质的区别,他们编译的都是同一份源码. ...

  7. 通过DEBUG宏定义管理debug模式和release模式

    文章目录 一.引言 二.带有前缀信息的debug调试输出 三.不带有前缀信息的debug调试输出 四.总结 一.引言   软件版本通常有debug和release两个版本,器本质上是同一套源代码,只是 ...

  8. Visual Studio 中Debug模式和Release模式的区别

    引用文章:Visual Studio中Debug和Release的区别 https://www.cnblogs.com/darrenji/p/3907004.html

  9. 调试中Debug模式与Release模式区别

    一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...

最新文章

  1. iscsi网络磁盘共享
  2. leetcode89 (2022.1.8)
  3. linux乌班图中文输入法,Ubuntu Linux怎么安装中文输入法
  4. Redhat或者Centos 手动安装sublime text 3
  5. pytorch调用tensorboard方法尝试
  6. 【计蒜客习题】蒜头君运送宝藏
  7. 中国科学院全国名词委组合数学和计算机科学研究开发中心 顾同新,有关组合数学家陆家羲的几点史实澄清.doc...
  8. Flash视频播放器 JW PLAYER怎么在网页中运用?
  9. Port-A-Thon
  10. ONNX转ms后,benchmark跑分非常慢
  11. 乡村少年宫计算机教师简介,乡村少年宫教师感言
  12. 从一坨「便便」说起,大V亲测iPhone X为什么这么贵!
  13. LED显示行业之闪烁现象
  14. 将谷歌插件打包给别人使用
  15. Oracle导入导出dmp文件步骤
  16. nginx端口映射配置(Windows)
  17. 《精益数据分析》-第二部分概括笔记
  18. JavaScript是单线程还是多线程?
  19. css 实现 防抖效果
  20. java netty wss_netty中websocket, wss

热门文章

  1. Nginx_反向代理配置讲解
  2. Oracle之SQL分析函数
  3. SpringBoot 对象输出
  4. mac自带python怎么用_怎么在mac上使用python
  5. win10下安装ubuntu,双系统,免U盘
  6. 光控华登王毅喆:如何投资科技领域?坚守技术驱动,敬畏并影响周期
  7. 这几个在搞低功耗广域网的,才是物联网的黑马
  8. 惠普大佬:未来30年四大趋势将推动科技产业发展
  9. error Infos
  10. CodeForces - 1517D Explorer Space(dp)