GDB:有关回溯中文件的相对和绝对路径的问题

发布于 2024-11-17 05:30:14 字数 533 浏览 2 评论 0原文

我对 gdb 或 gcc (但不是 firefox)有疑问。

当我调试 Firefox 时,我在 gdb 中只看到绝对路径。示例:

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

How can i see onlyrelative paths in backtraces when debug firefox?

PS海湾合作委员会4.4.1; gdb 7.0。

I have question about gdb or gcc (but not firefox).

I see only absolute paths in gdb when i debugging firefox. Example:

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

It's uncomfortable for reading such backtraces.
If i try to compile and debug tiny test program i see such backtrace (with relative paths to files):

0  main () at prog.c:5

How can i see only relative paths in backtraces when debugging firefox?

P.S. gcc 4.4.1; gdb 7.0.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光瘦了 2024-11-24 05:30:14

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 的构建方式。这可能被证明是一个非常重要的命题。

GDB will show absolute or relative path depending on how the program was compiled. Consider:

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

Now the same, but compile source via absolute path:

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

And again, this time with relative path that includes directory 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; }

So, you can get gdb to show relative path if you change the way firefox is built. That may prove to be a very non-trivial proposition.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文