我尝试通过“Qt Creator”调试器运行程序来观察程序是如何工作的。为了更好地定位,我还想在调用堆栈窗口中完全看到系统(核心)实用程序,因为我在 MS Visual Studio 6.0 中使用,而不仅仅是查看它们的汇编代码。对于实用程序,“Qt Creator”调试器仅显示它们的调试符号不可用。(有时,系统会为其开发人员生成错误报告;错误报告对话框要求仅为特定程序安装此类符号。)如何获取核心调试符号?(不翻译整个 Ubuntu 版本。我使用“更新管理器”来定期安装更新。我的
/sys/内核/调试/x86目录只包含一个空文件。我没有在“Ubuntu 软件中心”中找到它,也没有看到http://packages.ubuntu.com/precise/x11/ 上的某些软件包是否是我所寻找的。)谢谢!
sai*_*895 11
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
Run Code Online (Sandbox Code Playgroud)
将 repo 链接添加到/etc/apt/sources.list.d/ddebs.list(这使得删除 repo 更容易)。或者,您也可以将每个deb链接复制到 Software Sources 并从那里添加它们(请注意,您可能需要替换$(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.
要删除所有调试符号和存储库,请运行sudo apt-get remove \.*-dbgsym以删除所有-dbgsym包,并sudo rm /etc/apt/sources.list.d/ddebs.list删除调试符号存储库。
小智 7
添加到 Evans 答案:在 Ubuntu 18.04 及更高版本上,您使用命令
sudo apt install ubuntu-dbgsym-keyring
Run Code Online (Sandbox Code Playgroud)
安装 GPG 密钥。(根据https://wiki.ubuntu.com/Debug%20Symbol%20Packages)
添加到 saircot859 的答案。您还必须按照此处所述为存储库安装 GPG 密钥:https : //wiki.ubuntu.com/Debug%20Symbol%20Packages
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01 C8CAB6595FDFF622
Run Code Online (Sandbox Code Playgroud)