gdb 核心转储在 "sudo apt-get install libc6-dbg" 之后看不到任何符号
gdb core dump can not see any symbols after "sudo apt-get install libc6-dbg"
我正在尝试使用核心转储文件调试 Ubuntu 12.04(x86_64) LTS 中的程序。一开始,"bt"命令就ok了,就像下面的
(gdb) bt
#0 0x00007f3b38e3f425 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f3b38e42b8b in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007f3b38e7d39e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007f3b38e87b96 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007f3b3947dff6 in std::string::assign(std::string const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x000000000041cf5a in operator= (__str=..., this=<optimized out>) at /usr/include/c++/4.6/bits/basic_string.h:542
我想看到 libc.so.6 中的符号,所以我使用
安装 libc6-dbg
sudo apt-get install libc6-dbg
但安装后
libc6-dbg
我搞错了,如下所示:
(gdb) bt
#0 0x00007f3b38e3f425 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f3b38e42b8b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x0000000000000003 in ?? ()
#3 0x00007fffca496804 in ?? ()
#4 0x000000000000000c in ?? ()
#5 0x00007f3b38f84eab in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#6 0x0000000000000002 in ?? ()
#7 0x0000000000000020 in ?? ()
#8 0x0000000000000000 in ?? ()
我尝试使用
删除 lib6c-dbg
sudo apt-get remove libc6-dbg
但是没有任何效果
remove
仅删除二进制文件,但不删除配置和数据文件,您可能需要的是 purge
。 sudo apt-get purge libc6-dbg
应该可以解决问题。
I get all the thing wrong , showing in the below:
可能发生的是apt-get install libc6-dbg
也更新了已经安装的libc6
,并且当前安装的libc.so.6
不再匹配生成 core
文件时使用的文件。
对于 GDB 分析,您需要一个与运行时使用的完全 匹配的副本。
因此您需要重新安装旧版本的libc6
(查看/var/log/apt/history.log
以了解它是什么),并且匹配版本的libc6-dbg
.
更新:
It seems that the command apt-get install libc6-dbg get the libraries with version 2.15-0ubuntu10.12
正如我所猜测的那样。
How can I recover it to the version in 2.15-0ubuntu10.4
这确实是一个系统管理员问题,但是 here is an answer 我在 Google 上找到了 ;-)
sudo apt-get install libc6=2.15-0ubuntu10.4 libc6-dbg=2.15-0ubuntu10.4
应该可以解决问题。
我正在尝试使用核心转储文件调试 Ubuntu 12.04(x86_64) LTS 中的程序。一开始,"bt"命令就ok了,就像下面的
(gdb) bt
#0 0x00007f3b38e3f425 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f3b38e42b8b in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007f3b38e7d39e in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007f3b38e87b96 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007f3b3947dff6 in std::string::assign(std::string const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x000000000041cf5a in operator= (__str=..., this=<optimized out>) at /usr/include/c++/4.6/bits/basic_string.h:542
我想看到 libc.so.6 中的符号,所以我使用
安装 libc6-dbgsudo apt-get install libc6-dbg
但安装后
libc6-dbg
我搞错了,如下所示:
(gdb) bt
#0 0x00007f3b38e3f425 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007f3b38e42b8b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x0000000000000003 in ?? ()
#3 0x00007fffca496804 in ?? ()
#4 0x000000000000000c in ?? ()
#5 0x00007f3b38f84eab in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#6 0x0000000000000002 in ?? ()
#7 0x0000000000000020 in ?? ()
#8 0x0000000000000000 in ?? ()
我尝试使用
删除 lib6c-dbgsudo apt-get remove libc6-dbg
但是没有任何效果
remove
仅删除二进制文件,但不删除配置和数据文件,您可能需要的是 purge
。 sudo apt-get purge libc6-dbg
应该可以解决问题。
I get all the thing wrong , showing in the below:
可能发生的是apt-get install libc6-dbg
也更新了已经安装的libc6
,并且当前安装的libc.so.6
不再匹配生成 core
文件时使用的文件。
对于 GDB 分析,您需要一个与运行时使用的完全 匹配的副本。
因此您需要重新安装旧版本的libc6
(查看/var/log/apt/history.log
以了解它是什么),并且匹配版本的libc6-dbg
.
更新:
It seems that the command apt-get install libc6-dbg get the libraries with version 2.15-0ubuntu10.12
正如我所猜测的那样。
How can I recover it to the version in 2.15-0ubuntu10.4
这确实是一个系统管理员问题,但是 here is an answer 我在 Google 上找到了 ;-)
sudo apt-get install libc6=2.15-0ubuntu10.4 libc6-dbg=2.15-0ubuntu10.4
应该可以解决问题。