C ++如何在调试模式下运行宏调试?

时间:2015-11-07 06:14:56

标签: c++ debugging cygwin

我正在使用cygwin来编译我的程序。我使用的命令是g ++ -std = c ++ 11 -W -Wall -pedantic a1.cpp

如果定义了调试模式,我想执行部分代码,如果没有,则执行另一部分。

我的问题是,在调试模式下编译的命令是什么?我应该在if / else执行的代码中添加什么内容?

2 个答案:

答案 0 :(得分:0)

您可以在调试版本中添加命令行选项define -DDEBUGMODE

在您的代码中,您可以根据是否定义DEBUGMODE来决定做什么。

#ifdef DEBUGMODE
    //DEBUG code
#else
    //RELEASE code
#endif

我也建议阅读 _DEBUG vs NDEBUGWhere does the -DNDEBUG normally come from?

答案 1 :(得分:0)

1-首先调试启用/禁用方法是在完成命令中添加-D,如下所示:

gcc -D DEBUG <prog.c>

2-秒:要启用调试,请定义用这样的调试语句替换的MACRO:

#define DEBUG(fmt, ...) fprintf(stderr, fmt,__VA_ARGS__);

要禁用调试,请定义要替换的MACRO:

#define DEBUG(fmt, ...)

准备调试的示例:

#include <stdio.h>
#include <stdlib.h>

int addNums(int a, int b)
{
DEBUG ("add the numbers: %d and %d\n", a,b)
return a+b;
}

int main(int argc, char *argv[])
{
int arg1 =0, arg2 = 0 ;

if (argc > 1)
  arg1 = atoi(argv[1]);
  DEBUG ("The first argument is : %d\n", arg1)

if (argc == 3)
  arg2 = atoi(argv[2]);
  DEBUG ("The second argument is : %d\n", arg2)


printf("The sum of the numbers is %d\n", addNums(arg1,arg2) );

return (0);
}