gdb核心转储分析失败

gdb核心转储分析失败,gdb,coredump,Gdb,Coredump,(gdb)共享信息->这表明所有共享库符号都已读取 但仍然可以追溯到bt显示“没有任何可用的符号表信息”用于任何函数 有人能解释一下这个问题是什么吗?如何解决此问题并获得有意义的追溯?信息共享输出中的那一列总是令人困惑。这并不意味着实际上存在调试信息——它只是意味着gdb试图读取它。这些信息实际上对普通用户并不是那么有用 要想知道你是否真的有调试信息是非常困难的。一种方法是对各种文件使用readelf-WS,并查找相关的调试部分。这会告诉你它是否存在 然而!这还不够。可能缺少一个部分(除非你一直

(gdb)共享信息->这表明所有共享库符号都已读取 但仍然可以追溯到bt显示“没有任何可用的符号表信息”用于任何函数


有人能解释一下这个问题是什么吗?如何解决此问题并获得有意义的追溯?

信息共享输出中的那一列总是令人困惑。这并不意味着实际上存在调试信息——它只是意味着gdb试图读取它。这些信息实际上对普通用户并不是那么有用

要想知道你是否真的有调试信息是非常困难的。一种方法是对各种文件使用
readelf-WS
,并查找相关的调试部分。这会告诉你它是否存在

然而!这还不够。可能缺少一个部分(除非你一直在乱搞文件,否则不太可能)。或者gdb拒绝了部分调试信息(也不太可能)

另一种可能是您已将调试信息与库分离。这在发行版中很典型。在这种情况下,您必须确保安装调试信息包——在Fedora中,您可以使用
debuginfo install
;可能在其他发行版上也有类似的方法

在单独的调试信息案例中,您必须确保安装的文件版本与生成核心的进程使用的文件版本完全相同。这可能很困难。有时可以通过检查构建ID来完成,但这并不总是可能的,因为发行版经常清除文件的过期版本

如果所讨论的库是您的库,那么您必须使用
-g
重新编译它们,然后尝试重新创建核心。事实上,没有可靠的方法在事后生成必要的调试信息

如果核心是在其他机器上创建的,您可以尝试查找这些文件并在本地安装它们。您可以在任何地方安装它们,并使用
setsysroot
功能告诉gdb如何找到它们