gdb 调试宏定义macro

c语言中的宏定义,有着各种好处,当然也有它不好的一面。它实现的三个主要功能是:

          1)字符串替换

          2)头文件包含

          3)通用代码模块的扩展

在代码调试时候,调试宏定义是比较麻烦的一件事,下面就介绍一种比较简单的方法。

#include<stdio.h>

#define max(a, b)  ((a) > (b) ? (a) : (b))
#define min(a, b)  ((a) < (b) ? (a) : (b))

int main(void)
{
    int a = 66;
    int b = 88;
    int ret;

    ret = max(a, b);
    printf("ret is %d\n", ret);
    ret = min(a, b);
    printf("ret is %d\n", ret);

    return 0;
}

 

 

         如果我们需要调试宏定义的话,就需要更高级别的调试信息,-g3

gcc –g3 test,c

gdb a.out

这样我们就能调试宏定义了。

调试宏定义我们主要使用几个gdb命令如下:

       1)  macro define --                       定义一个新的的宏定义    如:macro define a 3

       2)  macro expand  macroname    展开宏定义 如: macro  expand min(a, b)

       3)  macro  list  macroname          列出所有用macro define -- 这条命令定义宏定义   如:macro list a

       4)  macro undef macroname        撤销macroname宏定义

       5)  info macro macroname           显示宏定义,包括在哪里定义,怎么定义。   如info macro min

如下图:

Screenshot

另外由于宏定义在调试的过程中比较复杂,所以我们应该少用宏定义,尽量用enum inline 来替换。

posted @ 2013-07-23 13:06  露天坝  阅读(2151)  评论(0编辑  收藏  举报