GDB: вопрос об относительных и абсолютных путях к файлам в следах - PullRequest
6 голосов
/ 25 июня 2011

У меня есть вопрос о GDB или GCC (но не Firefox).

Я вижу только абсолютные пути в GDB, когда я отлаживаю Firefox.Пример:

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

Неудобно читать такие следы.Если я пытаюсь скомпилировать и отладить крошечную тестовую программу, я вижу такую ​​обратную трассировку (с относительными путями к файлам):

0  main () at prog.c:5

Как я могу видеть только относительные пути в обратных трассировках при отладке Firefox?

PS gcc 4.4.1;GDB 7,0.

1 Ответ

1 голос
/ 25 июня 2011

GDB покажет абсолютный или относительный путь в зависимости от того, как была скомпилирована программа.Рассмотрим:

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

Теперь то же самое, но компилируем источник по абсолютному пути:

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

И снова, на этот раз с относительным путем, который включает префикс каталога:

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

Итак, вы можете получить GDB для отображения относительного пути , если вы измените способ сборки Firefox.Это может оказаться очень нетривиальным предложением.

...