2011-06-24 23 views
5

Mam pytanie dotyczące gdb lub gcc (ale nie firefox).GDB: Pytanie o względne i bezwzględne ścieżki do plików w śladach

Widzę tylko bezwzględne ścieżki w gdb podczas debugowania firefox. Przykład:

5 0x01bb0c52 in nsAppShell::ProcessNextNativeEvent 
    (this=0xb7232ba0, mayWait=1) 
    at 
    /media/25b7639d-9a70-42ca-aaa7-28f4d1f417fd/firefox-dev/mozilla-central/widget/src/gtk2/nsAppShell.cpp:144 

Jest niewygodne czytanie takich śladów. Jeśli próbuję skompilować i debugowania malutki program testowy widzę taki ślad (z względnymi ścieżkami do plików):

0 main() at prog.c:5 

Jak widzę tylko ścieżki względne w śladów czynności podczas debugowania Firefox?

P.S. gcc 4.4.1; gdb 7.0.

Odpowiedz

1

GDB wyświetli bezwzględną lub względną ścieżkę w zależności od sposobu kompilacji programu. Rozważmy:

$ cd /tmp 
$ cat t.c 
int main() { return 0; } 
$ gcc -g t.c && gdb -q -ex start -ex quit ./a.out 
Reading symbols from /tmp/a.out...done. 
Temporary breakpoint 1 at 0x4004c8: file t.c, line 1. 

Temporary breakpoint 1, main() at t.c:1 
1 int main() { return 0; } 

Teraz to samo, ale skompilować źródła poprzez ścieżki bezwzględnej:

$ gcc -g /tmp/t.c && gdb -q -ex start -ex quit ./a.out 
Reading symbols from /tmp/a.out...done. 
Temporary breakpoint 1 at 0x4004c8: file /tmp/t.c, line 1. 

Temporary breakpoint 1, main() at /tmp/t.c:1 
1 int main() { return 0; } 

I ponownie, tym razem z względną ścieżkę, która zawiera katalog prefix:

$ cd/
$ gcc -g tmp/t.c -o tmp/a.out && gdb -q -ex start -ex quit tmp/a.out 
Reading symbols from /tmp/a.out...done. 
Temporary breakpoint 1 at 0x4004c8: file tmp/t.c, line 1. 

Temporary breakpoint 1, main() at tmp/t.c:1 
1 int main() { return 0; } 

Więc można dostać gdb, aby pokazać względną ścieżkę , jeśli zmienić sposób, w jaki jest zbudowany firefox. Może to być bardzo nietrywialna propozycja.

+0

Dziękuję. Stworzyłem nową funkcję dla GDB 7.2 (argument "nopath" dla polecenia "backtrace"). Moja łatka wycina pełną ścieżkę do pliku w śladach. Przykład: (gdb) backtrace # 0 main (argc = 4, argv = 0xbffff884) w /media/25b7639d-9a70-42ca-aaa7-28f4d1f417fd/firefox-dev/mozilla-central/browser/app/nsBrowserApp.cpp : 204 (gdb) backtrace nopath # 0 main (argc = 4, argv = 0xbffff884) na nsBrowserApp.cpp: 204 Mam nadzieję, że komuś się przyda. Poprawka i opis tutaj: http://sourceware.org/ml/gdb-patches/2011-06/msg00385.html –

+0

Cool! Moja łatka została zatwierdzona. Podziękowania dla Jana Kratochvila. Moja opcja ze zmianami Jana jest dostępna w gdb 7.6: zestaw nazwa-pliku –

Powiązane problemy