Pergunta

Enquanto navega na vária opção muda para o meu compilador (GNU C ++ 3.2.3 é suportado pela minha organização para o meu determinada configuração de hardware), eu corri em toda esta:

-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.

Eu compilei um programa de teste com alguns macros (como um loop, um if-then-else em um argumento), em seguida, tentou o TotalView depurador comercial e GDB no G3 código compilado. Eu não vi nenhuma diferença (macros não foram expandidos para o código original, eu não poderia 'passo em' as macros, etc.).

Alguém aqui teve a experiência de começar a depuração extra 'apresenta' usando G3 em compiladores GNU?

Foi útil?

Solução

Sua pergunta parece implicar que você não entender o que as macros são. É claro não é possível passo para uma macro.

O G3 é bastante útil para programas de "macro pesados". Considere o seguinte:

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;
}

Sem G3, quando você está parado na linha 7 ou 10, você pode ter que procurar bastante para a definição de A (), e pode haver muitas dessas definições, para que você teria, então, para descobrir qual deles é "atual".

Com G3, GDB puder para fazer o trabalho pesado para você:

(gdb) b 7
Breakpoint 1 at 0x4004cc: file m.c, line 7.
(gdb) b 10
Breakpoint 2 at 0x4004fc: file m.c, line 10.
(gdb) r

Breakpoint 1, main () at m.c:7
7         A(1); A(2); A(3); A(4);
(gdb) info macro A
Defined at /tmp/m.c:5
#define A(x) case x: printf(#x "\n"); break
(gdb) c
1
2
3
4

Breakpoint 2, main () at m.c:10
10        A(1); A(2);
(gdb) info macro A
Defined at /tmp/m.c:9
#define A(x) case 10+x: printf("10+" #x "\n"); break
(gdb) q

Outras dicas

Eu tenho -g3 tentou desligar e desde 1992 e eu tenho Nunca chegado que ele faça alguma coisa útil .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top