腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
7
回答
在C++中使用调试宏的原因是什么?
、
、
我正在开发其他人编写的C++程序,我看到了很多这样的调试用法 #ifdef DEBUG cout << "Value is "<< value << endl; #endif 我自己还在学习成为一个富裕的C++程序员的过程中,我主要使用Visual Studio和断点进行调试。所以我想知道,如果我能够单步执行代码来调试值,还有没有其他原因使用这些宏? 我试着用谷歌搜索,但没有找到太多有用的页面。 谢谢。
浏览 0
提问于2012-06-01
得票数 9
回答已采纳
3
回答
在VS2012中哪里可以找到调试构建的调试符号?
、
我有Win32动态链接库的应用程序。已选择“调试版本”。我写了这样的代码: #if DEBUG fflush(logFile); #endif 但是fflush(logFile);是灰色的,所以我假设它不会被执行。但我希望它被处死。这是否意味着在调试中没有定义DEBUG符号?我可以在VS2012的什么地方定义它?
浏览 0
提问于2012-11-28
得票数 1
回答已采纳
3
回答
使用C/C++宏作为条件编译的快捷方式是一种良好的实践吗?
、
、
假设我希望在代码中有几种类型的输出消息。其中之一是DEBUG,它仅在代码以调试模式编译时打印。 通常我得写点东西 #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif 这是相当麻烦和烦人的使用在许多地方。 为代码片段定义宏是一个很好的实践,所以您可以这样使用它吗? MSG_DEBUG("Debug message") 或者有没有其他更优雅的方法来处理没有宏的问题呢?我对C和C++两种可能的解决方案都感兴趣,因为我在不同的项目中使用这两种语言。
浏览 0
提问于2018-09-17
得票数 13
回答已采纳
2
回答
函数'DLog‘的隐式声明在C99中无效
、
、
我在这里使用了NSLog的宏版本, 像这样, #ifdef DEBUG #define DLog(...) NSLog(@"%s(%p) %@", __PRETTY_FUNCTION__, self, [NSString stringWithFormat:__VA_ARGS__]) #endif 它运行良好,直到我将应用程序运行模式从Debug更改为Release。 现在,我得到以下错误: 函数'DLog‘的隐式声明在C99中无效。 我该怎么解决这个问题? 我读了很多问题,,和,但是没有一个答案对我有用。 这个问题与CocoaLumberjack一点关系都没有。
浏览 4
提问于2015-03-24
得票数 4
回答已采纳
3
回答
什么是调试模式w.r.t C++?
、
出发地: 调试模式支持 特殊的“调试模式”日志宏只会在调试模式下产生影响,而对于非调试模式编译则会被编译为空。 “调试模式”是什么意思w.r.t C++程序? 当我们在程序上使用GDB时,我们可以说程序处于调试模式吗?
浏览 0
提问于2012-05-08
得票数 4
回答已采纳
2
回答
为什么发布文件夹下的.exe文件可以在VC++中进行调试?
、
、
、
我正在使用Visual 2010开发一个C++应用程序(没有MFC)。当我按下F5调试我的应用程序时,一个新的.exe文件出现在 reason 文件夹下,而不是debug文件夹下,因为出于某种原因,当前active解决方案配置中的项目配置(即 Debug <code>E29<//code>)是<code>E 110</code>发布<code>E 211</code>。 我想知道为什么Release文件夹下的文件夹比Debug文件夹下的文件夹的大小更小,为什么也可以进行调试。
浏览 3
提问于2015-05-08
得票数 0
4
回答
调试宏与调试变量
、
、
下面是使用调试变量的示例 class A{ public: A(bool debug):m_debug(debug){}; ~A(){}; void Test(){ for(int i=0;i<1000000;i++){ // do something if(m_debug) print(); } } void print(){ std::cout << "something" << std::endl; } private: bool m_debug; };
浏览 8
提问于2016-01-11
得票数 0
回答已采纳
10
回答
使用宏增加c++代码的冗余度
、
、
我希望有可能增加我的程序的调试目的的冗长。当然,我可以在运行时使用开关/标志来实现这一点。但这可能是非常低效的,因为我应该在代码中添加所有的'if‘语句。 因此,我想添加一个在编译过程中使用的标志,以便在代码中包含可选的、通常较慢的调试操作,而不会在不需要时影响程序的性能/大小。下面是一个例子: /* code */ #ifdef _DEBUG_ /* do debug operations here #endif 因此,使用-D_DEBUG_编译应该可以做到这一点。没有它,这部分将不会包含在我的程序中。 另一种选择(至少对于i/o操作)是定义至少一个i/o函数,例如 #ifdef
浏览 0
提问于2013-02-11
得票数 15
2
回答
在_Python_CALL代码中#ifndef C++意味着什么?
我正在调试一个C++代码,它包含一些与Python相关的内容。在一项职能中: void normalize(string &text) { ... #ifdef _Python_CALL newContentStr = contentStr; #endif #ifndef _Python_CALL ... ... #endif return 0; } 我使用GDB来跟踪代码逻辑,并发现在它到达行后: newContentStr = contentStr; 然后直接跳到函数的最后一行: return 0; 为什么跳过以下代码? #ifndef _Python_
浏览 6
提问于2022-02-04
得票数 0
回答已采纳
2
回答
有没有一种跨平台的方法来检测调试模式编译?
、
、
、
有没有一种跨平台的方法来检测调试模式编译?如果不是,那么如何为顶级编译器: MSVC,GNU & MINGW,mac,clang,英特尔做到这一点。 例如,MSVC,您可以检测调试模式,如下所示。 #if defined _DEBUG // debug related stuff here #else // release related stuff here #endif
浏览 1
提问于2013-07-07
得票数 4
回答已采纳
3
回答
如何在程序中关闭用于打印调试数据的函数
、
因此,我的C++程序中有几个函数可以“转储”数据。这极大地帮助了我在开发应用程序时进行故障排除。数据被转储到大约12个ascii文件中。 现在,我希望这些函数不会转储任何数据,这样我就可以看到程序的运行速度,并且有一个程序的“最终版本”。 我是不是对所有的函数都这样做: #define DO_DEBUG #ifdef DO_DEBUG void dump_dataA(...) { // lot of code } #else void dump_dataA(...) { return; } #endif 我沿着这些思路思考,因为我不能返回并删除所有那些我将数据转储到std::o
浏览 0
提问于2017-07-26
得票数 0
3
回答
调试宏奇怪行为
、
、
我有一份这样的档案: #include <stdio.h> #include <string.h> #include <stdlib.h> #define DEBUG int main(void) { #ifdef DEBUG printf("We are in debug mode"); #endif } 我被告知使用ifdef和endif (用于此)。我的问题发生在我使用makefile编译这个文件时(我不允许编辑这个文件)。所发生的是print语句(Debug one)打印,这不应该是因为我没有处于调试模式。我尝试使用这个
浏览 3
提问于2015-10-02
得票数 1
回答已采纳
4
回答
如何使某些代码仅在调试生成目标中运行?
、
、
我想使用一些额外的代码来轻松地调试和测试。但我不想将这段代码添加到“发布”二进制文件中。是否有为构建目标定义的预处理器符号?否则,我需要使用什么条件来实现这一点?
浏览 8
提问于2015-07-14
得票数 2
回答已采纳
2
回答
如何查看调试条件语句的输出?
、
、
、
我用#ifdef DEBUG条件语句编写了一个代码,以便在代码块中打印cout语句。我的问题是: 因此,这些条件调试只会在条件期间出现,对吗? 如果是,那么在调试代码时如何查看代码块中的输出?
浏览 3
提问于2016-09-15
得票数 0
回答已采纳
5
回答
打开和关闭调试代码的方法
、
我为arduino编写了一个曼彻斯特解码算法,我经常在尝试运行时打印调试内容,但是打印到串行和字符串常量会增加很多开销。我不能把它留在最后的二进制文件里。 我通常只是浏览代码,删除任何与调试相关的行。我在找一种很容易地打开和关闭它的方法。 我唯一知道的方法就是 #if VERBOSE==1 Serial.println(); Serial.print(s); Serial.print(" "); Serial.print(t); Serial.print(" preamble"); #endif ...
浏览 6
提问于2015-03-05
得票数 4
7
回答
如何编写一个只有在DEBUG被#defined时才编译的'if‘条件?
、
我需要一些帮助来为'if-condition‘编写一个宏,它只有在#define指令定义了调试标志时才会编译。 这里有一个例子,它说明了我想要什么。第一段代码显示了编写带有#ifdef的if条件的常用方法。 #ifdef DEBUG if( rv == false ) { string errorStr = "error in return value" ; cout << errorStr << endl ; throw( Exception(errorStr) ) ; } 我想用类似于下面的方式来写它: DEBU
浏览 2
提问于2010-06-24
得票数 4
3
回答
控制台仅在调试模式c++中输出
、
、
、
我本以为这将是一个被广泛提出的问题,但我仍未找到答案。 我调试了一些C++代码,这些代码只以某些函数句柄作为输入,以一种微妙的方式创建错误。长话短说,修复了这个问题,但我在.cpp文件中定义了: #define DEBUG(x) do { std::cerr << x << std::endl; } while (0) 不用说,代码中到处都是: DEBUG("Foo's address") DEBUG(&Foo) 现在,我假设在“发布”中,编译器会忽略所有这些预编译器输出。但事实并非如此! 那么,如何在实践中做到这一点(我想将输出留给以
浏览 3
提问于2015-08-06
得票数 0
回答已采纳
10
回答
在C++中调试宏
、
、
、
我刚刚在C中遇到了一个我非常喜欢的调试宏 #ifdef DEBUG_BUILD # define DEBUG(x) fprintf(stderr, x) #else # define DEBUG(x) do {} while (0) #endif 我猜C++的类比应该是:- #ifdef DEBUG_BUILD # define DEBUG(x) cerr << x #else # define DEBUG(x) do {} while (0) #endif 第二个代码片段是否类似于C中的代码片段? 您有最喜欢的C++调试宏吗? 编辑:我所说的“调试宏”指的
浏览 6
提问于2013-01-10
得票数 77
回答已采纳
3
回答
发行和调试编译的程序的源代码有区别吗?[C/C++]
、
、
、
最近,我对C++编程有了更深入的了解,并不断地进入整个“调试和发布”编译版本。现在,我觉得我对已编译代码的发布版本和调试版本之间的一些区别有了相当好的理解。对于调试版本的代码,编译器不会尝试优化代码,以便您可以运行调试器并逐行遍历程序。从本质上讲,编译后的代码在执行方式上与源代码非常相似。在发布模式下编译时,编译器尝试优化程序,使其具有相同的功能,但效率更高。 但是,我很好奇,在发行版和调试版本之间是否有不同的源代码。也就是说,当我们提到调试和发布时,我们总是在谈论编译后的代码,还是在源代码中存在差异? 这个问题是由于我在一种专有的编程语言中工作而产生的,在这种语言中,一个正式的逐步调试器不存
浏览 2
提问于2016-08-26
得票数 5
回答已采纳
20
回答
#ifdef vs #if -作为启用/禁用特定代码段编译的方法,哪种方法更好/更安全?
、
、
、
、
这可能是一个风格问题,但我们的开发团队中存在一些分歧,我想知道是否有人对这个问题有任何想法…… 基本上,我们有一些调试打印语句,我们在正常开发期间关闭了这些语句。就我个人而言,我更喜欢做以下事情: //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() { int someVariable = 5; #if(DEBUG_ENABLED) printf("Debugging: someVariable == %d", someVariable); #endif
浏览 22
提问于2008-09-25
得票数 124
回答已采纳
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
DEBUG系列十:Smartforms debug
如何快速debug
Debug MySQL on Clion
pyclone-install and debug
PARADISE Debug功能介绍
热门
标签
更多标签
云服务器
ICP备案
实时音视频
即时通信 IM
对象存储
活动推荐
运营活动
广告
关闭
领券