
C++ 调试帮助简介
发布日期:2021-05-07 00:50:45
浏览次数:16
分类:技术文章
本文共 1115 字,大约阅读时间需要 3 分钟。
Source: C++ primer(version 5)
主要思想是:程序所包含的调试代码仅在开发过程中执行。当应用程序已经完成,并且准备提交时,就会将调试代码关闭。这种方法会用到两项预处理功能:assert 和NDEBUG。
assert预处理宏
定义在<cassert>
头文件中
NDEBUG预处理变量
assert的行为依赖于一个名为NDEBUG的预处理变量的状态。如果定义了NDEBUG,则assert什么都不做。
使用:g++ -D NDEBUG -o test test_console.cpp
这条命令的作用等价于在main.c文件的一开始写#define NDEBUG
使用:
可用NDEBUG预处理变量实现有条件的调试代码:
int main( void ){#ifndef NDEBUG cerr << “starting main” << endl;#endif//...}
- 如果NDEBUG未定义,那么程序就会将信息写道cerr中,如果NDEBUG已经定义了,那么程序执行时将会跳过#ifndef和#endif之间的代码。
五种在调试时非常有用的常量
预处理器还定义了其余五种常有用的常量:
- _ FILE _ 文件名
- _ LINE _ 当前行号
- _ TIME _ 文件被编译的时间
- _ DATE _ 文件被编译的日期
- _ func _ 函数的名字
例子:
// test_console.cpp#include#include #include using namespace std;int main (int argc, char** argv){ cout<<"argc = "< <
执行:
g++ -D NDEBUG -o test test_console.cpp -std=c++11./test safd
输出:
argc = 2Error: test_console.cpp :in funciton main at line 13 Compiled on Nov 9 2017 at 14:55:45./testsafd
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月12日 22时40分15秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java设计模式 —— 桥接模式(Bridge)
2019-03-03
计算机三级 信息安全技术历年真题(二)总共十套 3月底之前更完
2019-03-03
详解: 最小生成树
2019-03-03
[编程题]:n头牛中选择满足所有m种特性的牛(百度2021)
2019-03-03
Redis中的删除策略和逐出算法
2019-03-03
[数据结构]:红黑树(二)
2019-03-03
PyCharm安装与配置
2019-03-03
Docker - 部署 Redis 6.0.8
2019-03-03
Android - Broadcasts overview(不完整)
2019-03-03
OrCAD Capture CIS 16.6 - 为元器件添加属性
2019-03-03
排序算法总结——c++实现
2019-03-03
STL基础梳理 2019.1.19(仿函数,谓词,内建函数对象,适配器,算法)
2019-03-03
IDEA效率快捷键收集
2019-03-03
并发情况下三种线程/并发安全
2019-03-03
希尔排序
2019-03-03
C#,asp.net,ashx处理session
2019-03-03
501 5.1.7 Invalid address
2019-03-03