2011-07-13 50 views
1

我有核心转储文件。当我尝试在gdb中打开时。我能够看到回溯(带有地址及其相应的功能),但是映射到.so文件的相应功能不是源。如何将.so文件映射到gdb中的源文件

BT看起来像这样

#0 0xf611b39c in xxFun() from /lib/libxx.so.0 

$file /lib/libtxx.so.0 
/lib/libtxx.so.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped 

能够利用纳米符号显示!

查询: - 1)我该如何将这个.so文件映射到源文件 2)我无法显示信息当地人/参数。我怎样才能得到这些数据?

当我尝试显示

#info locals 
No symbol table info available. 
#info args 
No symbol table info available. 

请让我知道如果你需要更多的信息。

+1

如果构建了.so文件自己,在调试模式下重新构建它(即至少使用'-g'编译旗)。如果没有,您需要从库维护人员那里获得调试版本(或者编译源代码)。 –

回答

0

正如“n.m.”评论说,你需要libxx.so内置调试信息(通常在编译时切换-g)。

,将提供两个地址,源映射,以及info localsargs

+0

@ n.m和@Employed俄罗斯。感谢您的建议。其实我需要使用调试模式构建它,并使用* .so.debug文件而不是* .so文件。但* .so文件显示,它没有条带。那是奇怪的唯一的东西。 – Thangaraj