无法调查由Solaris上GCC 4.6.x生成的程序生成的核心文件

无法调查由Solaris上GCC 4.6.x生成的程序生成的核心文件,c,debugging,gcc,gdb,solaris,C,Debugging,Gcc,Gdb,Solaris,我们在调试C/C++程序核心文件(该程序由GCC 4.6.1构建)时遇到困难,即使是调试版本,尽管file命令显示调试信息和符号可用 在gdb中,即使提供了正确的调试可执行文件,符号也不会是人类可读的 顺便说一句,核心文件也不能用“mdb”或“adb”来分析。每次启动adb时,都会生成一个新的核心 使用gdb进行调试会产生如下错误: warning: Cannot initialize thread debugging library: Debugger service failed warni

我们在调试C/C++程序核心文件(该程序由GCC 4.6.1构建)时遇到困难,即使是调试版本,尽管file命令显示调试信息和符号可用

在gdb中,即使提供了正确的调试可执行文件,符号也不会是人类可读的

顺便说一句,核心文件也不能用“mdb”或“adb”来分析。每次启动adb时,都会生成一个新的核心

使用gdb进行调试会产生如下错误:

warning: Cannot initialize thread debugging library: Debugger service failed
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers

还尝试从源代码构建gdb,但没有成功。在启动gdb之前添加了“LD_PRELOAD=/usr/lib/libpthread.so.1”也不起作用(实际上程序链接到了-lpthread)。

要接收可用的核心文件,请确保在链接到可执行文件之前,已使用
-g
选项编译了源代码

要加载core,请调用:

gdb executable-which-the-core-was-created-from core-file

是C还是C++?C++编译可以执行名字MangLink,它是一个包含C++代码的程序,虽然我不认为名字在这里困扰。你可以看看这里:“ALK感谢这些提示,虽然我们已经使用工具包(MDB/ADB)在我们的团队超过2年。现在的问题是,每次我启动adb时,它都会在/tmp文件夹中为自己生成一个新的内核。似乎无法使用GCC4.6正确加载librtld_db。请尝试本文:如果使用GNU编译器,也可以:-ggdbXhelps@piotr:所有这些都假设您使用的是
gcc
(与
gdb
版本相同)。是的,该程序是使用-g选项构建的,甚至尝试从源代码构建gdb(7.3.1)。