GNU Compiler ladit 'Level'

hlasů
0

Při procházení různých volitelných přepínačů pro svůj kompilátor (GNU C ++ 3.2.3 je podporována naší organizaci pro mou dané konfiguraci hardwaru), jsem narazil na toto:

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

Zpracovala jsem testovací program s několika maker (jako smyčka, je if-then-else na argument), a pak se snažil komerční ladicí TotalView a GDB na kódovém sestaven -G3. Neviděl jsem žádný rozdíl (makra nebyla rozšířena na jejich původní kód, nemohl jsem ‚krok do‘ maker, atd.).

Tady někdo měl zkušenosti dostat další ladění ‚vlastnosti‘ pomocí -G3 na GNU kompilátory?

Položena 31/12/2008 v 23:29
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
3

Vaše otázka se zdá vyplývat, že vy to nechápete, co jsou makra. Samozřejmě nemůžete vstoupit do makra.

-G3 je velmi užitečné pro programy „makro těžkými“. Zvážit:

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

Bez -G3, když se zastavil na řádku 7 nebo 10, budete muset hledat hodně pro definici A (), a tam mohl být mnoho takových definic, takže by pak musel přijít na to, který z nich je „aktuální “.

S -G3, GDB může dělat těžkou práci za vás:

(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
Odpovězeno 06/01/2009 v 09:57
zdroj uživatelem

hlasů
2

Jsem se snažil -g3vypnout a zapnout již od roku 1992 a já jsem nikdy nedostal to dělat něco užitečného .

Odpovězeno 31/12/2008 v 23:57
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more