我如何以允许使用 gdb 逐步浏览源代码的格式获取 eglibc 的源代码?
我尝试使用apt-get source libc6-dev
并获取源代码,但我认为由于未应用预处理器指令,gdb 的行号与我下载的源代码不匹配。这使得它在尝试逐步查看源代码并查看 libc 中的函数如何工作时不太有用。
答案1
如果您真的想逐步了解源代码,我建议您构建一个不带优化且不剥离二进制文件的 libc。
幸运的是,这应该很容易 - 因为您已经获得了源代码,所以您可以从中构建软件包。您需要确保DEB_BUILD_OPTIONS
evnironment 变量包含noopt
获取-O0
二进制文件并nostrip
保留调试符号,然后使用以下命令正常构建debuild
:
sudo apt-get build-dep libc6
DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc
将为您构建带有-O0
和不带有调试符号的软件包;然后您可以使用它们进行安装,dpkg
然后 gdb 将拾取调试符号。作为额外的好处,gdb 还会知道在哪里找到源文件,因此您将获得源列表。
由于我们没有更改软件包的版本,下次运行升级时,apt 将用存档版本替换这些本地安装的软件包。
答案2
您可以尝试 apt-get source -d libc6-dev,这将为您提供 deb 格式的源代码和差异。然后您可以解压缩它,它应该会提供 tar.gz 中的源代码,并将其解压缩。它应该存储在您运行 apt-get 命令的目录中。