如何使用gdb单步执行#define语句

时间:2011-10-18 11:02:21

标签: gcc gdb

我正在使用gcc编译器。我正在研究一个经常涉及在单个#define指令中编写语句块的代码。例如以下内容:

#include<stdio.h>    
#define DO_RR(x) do { \
for(i=0;i<x; i++) \
    printf("%d", i); \
}while(0);

int main() {
  int i=0;
  DO_RR(5)
  return 0;
}

现在我希望能够单步执行DO_RR中的语句。但是当我尝试它时,控件直接从main中的DO_RR语句跳转到下一个语句,而不是单步。无论如何都要实现预处理器块的步进?

2 个答案:

答案 0 :(得分:3)

你不能,#define由预处理器扩展而不存在于代码中。

答案 1 :(得分:1)

要补充@ Angelom的答案,您可以使用函数解决方法。将#define中的任何代码移动到函数中,您就可以单步执行函数调用。

理想情况下,通常情况下,您可以使用内联函数替换整个#define