gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:56:09 28 4
gpt4 key购买 nike

我对 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

调试firefox时如何在回溯中只看到相对路径?

附言海湾合作委员会 4.4.1; gdb 7.0.

最佳答案

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

因此,如果您更改 firefox 的构建方式,您可以让 gdb 显示相对路径。这可能被证明是一个非常重要的命题。

关于gcc - GDB:关于回溯中文件的相对和绝对路径的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com