TL;DR: 安装 libwebkitgtk-3.0-0-dbg ,然后您就拥有必要的调试符号。
##对于调试符号,通常不必从源代码安装。
如您所知,为了获取自己构建的软件的调试符号,可以使用带有-g
选项的GCC。
对于通过操作系统包管理器(包括此处的libwebkitgtk-3.0-0
)安装的软件,至少对于官方包来说,通常也提供提供调试符号的包。
实际上,您不需要具有程序或库的调试版本即可在gdb
中获取符号堆栈跟踪。 gdb
还支持在/usr/lib/debug
中提供“附加”调试符号的文件。
您根据问题的标签使用Ubuntu。在Ubuntu上,调试符号包有两种类型:
-dbg
和
-dbgsym
。位于
/路径
的程序或库将在
/usr/lib/debug/路径
处获取调试符号。
##
-dbg
软件包
这些软件包的名称通常与提供实际可执行文件或库文件的相应软件包不同。它们的名称通常类似于提供头文件的
-dev
软件包和
-doc
软件包。一个
-dbg
软件包有时在名称中具有比实际库软件包更少的库版本编号,有时覆盖在多个其他软件包中提供的二进制文件。
例如,
libgtkmm-3.0-1
的相应
-dbg
软件包是
libgtkmm-3.0-dbg
。
另一方面,有时候一个-dbg
包的名称与其提供符号的包相同(除了-dbg
后缀)。例如,libwebkitgtk-3.0-0
的对应-dbg
包是libwebkitgtk-3.0-0-dbg
。那就是你想要的。
你可以在软件中心安装它,或者运行以下命令:
sudo apt-get update && sudo apt-get install libwebkitgtk-3.0-0-dbg
现在,当您调试链接到由
libwebkitgtk-3.0-0
提供的库的程序时,
gdb
将自动从
libwebkitgtk-3.0-0-dbg
提供的文件中加载符号。
##-dbgsym
软件包
有时官方软件包提供的二进制可执行文件没有任何-dbg
软件包提供的符号。当出现这种情况时,通常可以安装-dbgsym
软件包。
与-dbg
软件包不同,-dbgsym
软件包:
- 几乎总是以简单(和可预测)的方式命名为
X-dbgsym
,其中X
是提供程序或库本身的软件包。
- 由特殊的软件源(存储库)提供,而不是提供相应程序/库软件包和
-dbg
软件包的相同软件源。
由于-dbgsym
软件包位于单独的存储库中,因此必须启用这些存储库。它们的DEB行是:
deb http:
deb http:
deb http:
deb http:
为了启用它们,您可以运行以下命令(改编自
DebuggingProgramCrash,由
Ubuntu文档维基的贡献者,
第2节):
echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse
<em>deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse</em>
" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
sudo apt-get update
留下斜体字行(如果您使用开发版本(alpha或beta),请不要留下斜体字行)。但是,如果您继续使用稳定版本,则确保添加它们。
这些命令执行三个操作:
- 创建文件
/etc/apt/sources.list.d/ddebs.list
(其中包含DEB行)。
- 导入这些存储库的签名密钥。
- 更新系统有关从哪里安装哪些软件包和版本的信息。
因此,如果您想要使用提供的符号-dbgsym
而不是提供的符号-dbg
,则与上述简单命名约定相符的libwebkitgtk-3.0-0
的-dbgsym
软件包是libwebkitgtk-3.0-0-dbgsym
。
您可以在同一系统上安装
-dbg
和
-dbgsym
软件包,
但如果它们提供相同文件的符号,则不行。因此,
libwebkitgtk-3.0-0-dbg
和
libwebkitgtk-3.0-0-dbgsym
会互相冲突;它们不能同时安装。
##使用符号
在大多数类Unix操作系统中,调试器会自动查找已安装的符号。Ubuntu也不例外——在Ubuntu中,gdb
会自动在/usr/lib/debug
中查找它们。因此,您无需进行任何特殊操作。
但是,如果您需要告诉gdb
加载特定的调试符号文件,则应使用-s file
标志。有关详细信息,请参见GNU手册和gdb(1)。
libarchive13
既没有-dbg
也没有-dbgsym
.... - socketpair