GNU编译器调试';级别'; 在浏览我的编译器(GNU C++ 3.2.3是由我的组织支持我的硬件配置)的各种选项开关时,我碰到了这个: -glevel : Level 3 includes extra information, such as all the macro definitions present in the program. Some debuggers support macro expansion when you use -g3.

GNU编译器调试';级别'; 在浏览我的编译器(GNU C++ 3.2.3是由我的组织支持我的硬件配置)的各种选项开关时,我碰到了这个: -glevel : Level 3 includes extra information, such as all the macro definitions present in the program. Some debuggers support macro expansion when you use -g3.,c++,debugging,gnu,C++,Debugging,Gnu,我用几个宏编译了一个测试程序(比如一个循环,一个参数上的if-then-else),然后在编译的代码-g3上尝试了商业调试器TotalView和GDB。我没有看到任何区别(宏没有扩展到它们的原始代码,我不能“单步进入”宏,等等) 这里有没有人有过在GNU编译器上使用-g3获得额外调试“功能”的经验?自1992年以来,我断断续续地尝试了-g3,但我从未得到过它做任何有用的事情自1992年以来,我断断续续地尝试了-g3,我从未得到过你的问题似乎暗示你不了解宏是什么。当然,您不能单步执行宏 g3对于“

我用几个宏编译了一个测试程序(比如一个循环,一个参数上的if-then-else),然后在编译的代码-g3上尝试了商业调试器TotalView和GDB。我没有看到任何区别(宏没有扩展到它们的原始代码,我不能“单步进入”宏,等等)


这里有没有人有过在GNU编译器上使用-g3获得额外调试“功能”的经验?

自1992年以来,我断断续续地尝试了
-g3,但我从未得到过它做任何有用的事情

自1992年以来,我断断续续地尝试了
-g3,我从未得到过你的问题似乎暗示你不了解宏是什么。当然,您不能单步执行宏

g3对于“重宏”程序非常有用。考虑:

int main()
{
  int i;
  for (i = 0; i < 20; ++i) {
#define A(x) case x: printf(#x "\n"); break
    switch(i) {
      A(1); A(2); A(3); A(4); /* line 7 */
#undef A
#define A(x) case 10+x: printf("10+" #x "\n"); break
      A(1); A(2); /* line 10 */
    }
  }
  return 0;
}

您的问题似乎暗示您不了解宏是什么。当然,您不能单步执行宏

g3对于“重宏”程序非常有用。考虑:

int main()
{
  int i;
  for (i = 0; i < 20; ++i) {
#define A(x) case x: printf(#x "\n"); break
    switch(i) {
      A(1); A(2); A(3); A(4); /* line 7 */
#undef A
#define A(x) case 10+x: printf("10+" #x "\n"); break
      A(1); A(2); /* line 10 */
    }
  }
  return 0;
}
我明白你不能进入宏。这是我试图理解手册中关于-g3“一些调试器支持宏扩展”的薄弱解释。无论如何,谢谢,你的解释说明了我能用-g3做什么!你赢得了被接受的答案!我明白你不能进入宏。这是我试图理解手册中关于-g3“一些调试器支持宏扩展”的薄弱解释。无论如何,谢谢,你的解释说明了我能用-g3做什么!你赢得了被接受的答案!