什么是调试模式 w.r.t C++.
What is a debug mode w.r.t C++?
从这里: http://google-glog.googlecode.com/svn/trunk/doc/glog.html
调试模式支持
特殊的"调试模式"日志记录宏仅在调试模式下起作用,对于非调试模式编译,则编译为无。
"调试模式"是什么意思C++程序?
当我们在程序上使用GDB时,我们可以说它处于调试模式吗?
调试模式"有三个方面。
许多库(包括标准库(在调试模式下编译时会插入调试帮助代码(数组边界检查、不变断言等(。它们在生产/非调试模式下删除这些检查以提高性能。
编译器具有调试开关。设置库用于检测是否为调试进行编译的调试宏,并在生成的二进制文件中插入调试符号。这有助于调试器在正在运行的二进制代码和生成它的源代码之间建立链接。
在调试器中运行程序是一种"运行时调试模式"。可以在调试器中运行可执行文件,无论它是否为调试而生成。你将通过调试版本获取更多信息。
所有这三种"调试模式"都是独立的。您(通常(可以通过手动设置适当的宏/定义来编译生产版本中的库调试检查,而无需要求编译器输出调试符号。
这些都不是特定于C++(或 C(的。许多其他语言都有这些概念。
调试模式"可以指很多东西,但在这种情况下,它指的是在没有定义NDEBUG
宏的情况下进行编译。从您链接到的页面(强调我的(:
DFATAL 严重性在调试模式下记录致命错误(即,没有定义 NDEBUG 宏(,但通过自动将严重性降低到 ERROR,避免在生产中停止程序。
C++程序(如C(通常具有基于预处理器宏的不同构建配置,这些宏可以从命令行传递。
规范调试模式标志是宏NDEBUG
,如果定义,则表示您不在调试模式下。(它可以更清楚地命名为PRODUCTION
,但遗憾的是,它是根据它不是什么来命名的。
NDEBUG
是标准的,也是古老的。它由<cassert>
标头使用,在 C 中称为 <assert.h>
。它的官方功能是将assert
宏变成无操作,但它通常也会在检查边界和要求方面影响C++标准库。
例如,g++ -DNDEBUG myProg.cpp -o myProg
应该在没有与调试相关的运行时功能的情况下进行编译。
请注意,这与为调试器生成符号支持不同,调试器由 GCC 上的 -g
或其他平台的其他标志控制。
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 为什么在保护模式下继承升级不起作用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 此模式的C++RegEx
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 使用可变模板的Broadcaster/Listener模式
- c++方法参数只能在linux的发布模式下自行更改
- 资源管理设计模式
- 使用 mod_gsoap 部署服务时,如何在 Gsoap 中更改 soap 上下文的模式?
- C++ 无法在字符数组中使用 for 循环打印字母模式
- 小字符串优化(调试与发布模式)
- 可视化C++:发布模式的运行时库作为'Multi-threaded Debug DLL'
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 在C++的一系列数字中查找重复模式
- 是否允许使用带有"w+"模式的 freopen 进行标准设置?
- C++ 使用存储在动态数组中的文本文件中的数据查找模式
- С++ wxWidgets:代码架构,设计原则和模式
- 以只读模式打开数据库时SQLITE_CANTOPEN错误