如何获取 glibc/libstdc++ 源并将其设置为供 gdb 查找?

ein*_*lum 3 source debugging glibc gdb source-code

我正在调试这个引发异常的程序。这使得我的调试器寻找一些源代码,例如../sysdeps/unix/sysv/linux/raise.c- 但未能找到它。

现在,我意识到我没有必要拥有这些资源,但我仍然希望它们在那里。

我正在开发 Devuan Chimaera GNU/Linux 系统。

对我来说,让这些源可用并可由 gdb 定位的最简单的方法是什么?

Ste*_*itt 6

最简单的方法是将包源代码提取到某处:转到适当的目录,然后运行

\n
apt source glibc\n
Run Code Online (Sandbox Code Playgroud)\n

在 中gdb,使用directory命令将相应的目录添加到源路径中。

\n

您可能还需要分离的调试符号;我不知道 Devuan 是否提供了一般的调试符号包(dbgsympackages),但我看到它libc6-dbg具有相同的目的:

\n
sudo apt install libc6-dbg\n
Run Code Online (Sandbox Code Playgroud)\n

这里\xe2\x80\x99是一个示例gdb会话:

\n
$ gdb ls\n...\n(gdb) directory ~/Debian/glibc\nSource directories searched: /home/steve/Debian/glibc:$cdir:$cwd\n(gdb) break malloc\nBreakpoint 1 at 0x46c8\n(gdb) run\nStarting program: /bin/ls \n\nBreakpoint 1, malloc (n=1441) at dl-minimal.c:50\n50    if (alloc_end == 0)\n
Run Code Online (Sandbox Code Playgroud)\n