如何获取Ubuntu使用的eglibc源代码?

如何以允许使用gdb单步执行源代码的格式获取eglibc的源代码?

我已经尝试使用apt-get source libc6-dev并且它可以用于获取源代码,但我认为由于未应用预处理器指令,因此gdb所具有的行号与我下载的源不匹配。 这使得在尝试单步执行源代码并查看libc中的函数如何工作时不太有用。

如果你真的想要逐步完成源代码,我建议你在没有优化的情况下构建一个libc,而不需要剥离二进制文件。

幸运的是,这应该很容易 – 因为你已经有了源代码,你可以从中构建软件包。 你需要确保DEB_BUILD_OPTIONS evnironment变量包含noopt来获取-O0二进制文件和nostrip来保存调试符号,然后使用debuild正常debuild

 sudo apt-get build-dep libc6 DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc 

将构建使用-O0构建的软件包,并且不会删除调试符号; 然后你可以用dpkg安装它们,gdb将获取调试符号。 作为额外的奖励,gdb还将知道在哪里可以找到源文件,因此您将获得源列表。

由于我们尚未更改软件包的版本,因此下次运行升级时,apt将使用归档版本替换这些本地安装的软件包。

你可以试试apt-get source -d libc6-dev,这应该给你deb格式的源和差异。 然后你可以解压缩它,它应该给tar.gz中的源代码解压缩它。它应该存储在你运行apt-get命令的目录中。