如何为已安装的软件包安装调试符号?

我尝试通过’Qt Creator’调试器运行它们来观察程序是如何工作的。 为了更好的方向,我想在调用堆栈窗口中完全看到系统(核心)实用程序,因为我从MS Visual Studio 6.0中使用它,不仅要查看它们的汇编代码。 对于实用程序,“Qt Creator”调试器仅显示其调试符号不可用。 (有时,系统会为其开发人员生成错误报告;错误报告对话框已请求仅为特定程序安装此类符号。) 如何获取核心调试符号? (没有翻译整个Ubuntu版本。我使用’Update Manager’定期安装更新。我的

  / SYS /内核/调试/ 86 

目录只包含一个空文件。 我还没有在’Ubuntu软件中心’找到它,也没看到http://packages.ubuntu.com/precise/x11/上的一些软件包是否是我所寻求的。)谢谢!

Ubuntu中的软件包将调试符号存储在一个单独的仓库中。 要下载这些调试符号,请运行(复制和粘贴):

printf "deb http://ddebs.ubuntu.com %s main restricted universe multiverse\n" $(lsb_release -cs){,-updates,-security,-proposed} | \ sudo tee -a /etc/apt/sources.list.d/ddebs.list 

将repo链接添加到/etc/apt/sources.list.d/ddebs.list (这样可以更轻松地删除repo)。 或者,您也可以将每个deb链接复制到Software Sources并从那里添加它们(注意,您可能需要将$(lsb_release -cs)替换$(lsb_release -cs)您正在运行的Ubuntu版本)。

要下载package的调试符号,您只需安装package-dbgsym或者在某些情况下安装package-dbg 。 请注意,PPA中的包没有repos提供的调试符号,并且维护者有责任提供包含调试符号的包,通常位于名为package-dbg

调试符号安装在/usr/lib/debug ,尽管gdb自动读入调试符号(如果可用),并且您不需要手动指定要查看的位置。根据包的Debhelper兼容版本,调试符号可能要么位于具有位于.build-id>= 9 )内部的构建ID名称的文件夹中,要么位于相对于可执行文件安装位置的位置( < 9 )。 例如,如果您要查找/usr/bin/zip的调试符号的位置,并且版本小于9,则它将位于/usr/lib/debug/usr/bin/zip

要删除所有调试符号和repo,请运行sudo apt-get remove \.*-dbgsym以删除所有-dbgsym包,并运行sudo rm /etc/apt/sources.list.d/ddebs.list以删除调试符号repo 。

添加到saircot859的答案。 您还必须按照此处所述安装存储库的GPG密钥: https : //wiki.ubuntu.com/Debug%20Symbol%20Packages

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 C8CAB6595FDFF622 

添加到Evans回答:在Ubuntu 18.04及更高版本中,您可以使用该命令

 sudo apt install ubuntu-dbgsym-keyring 

安装GPG密钥。 (根据https://wiki.ubuntu.com/Debug%20Symbol%20Packages )