gdb:找不到新线程:一般错误

当我运行GDB针对加载链接到pthread的.so的程序时,GDB报告错误“无法find新线程:一般错误”。

请注意,我运行的可执行文件不与pthreads链接。

任何线索?

 $ gdb --args lua -lluarocks.require
 GNU gdb(GDB)7.0-ubuntu
 Copyright(C)2009 Free Software Foundation,Inc.
许可证GPLv3 +:GNU GPL版本3或更高版本 
这是免费软件:您可以自由更改和重新分配它。
没有担保,在法律允许的范围内。 键入“显示复制”
和“显示保修”的细节。
这个GDB被configuration为“x86_64-linux-gnu”。
有关错误报告的说明,请参阅:
 <http://www.gnu.org/software/gdb/bugs/> ...
读取/usr/bin/lua...中的符号(没有finddebugging符号)...完成。
 (gdb)运行
启动程序:/ usr / bin / lua -lluarocks.require
 Lua 5.1.4版权所有(C)1994-2008 Lua.org,PUC-Rio
 >要求'ev'
 [使用libthread_db启用线程debugging]
找不到新线程:一般错误
 (gdb)q
debugging会话处于活动状态。

    劣等1 [过程4986]将被杀死。

退出吗?  (y或n)y

这个函数被调用require 'ev'

http://github.com/brimworks/lua-ev/blob/master/lua_ev.c#L25-65

有关我的系统的其他信息:

 $ uname -a
 Linux localhost 2.6.31-20-generic#58-Ubuntu SMP Fri Mar 12 04:38:19 UTC 2010 x86_64 GNU / Linux
 $ lsb_release -a
没有LSB模块可用。
经销商ID:Ubuntu
说明:Ubuntu 9.10
发行:9.10
代号:业力

这也适用:

LD_PRELOAD = / lib / libpthread.so.0 gdb –args ./app

64位的Ubuntu用户应该这样做:

 LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0 gdb --args ./app 

您也可以在包含以下文本的主目录中创建.gdbinit

 set env LD_PRELOAD /lib/libpthread.so.0 

看起来,GDB不喜欢应用程序“突然”变得依赖于pthreads。

我发现唯一的解决方法是链接主机应用程序与pthreads。

这很伤心…

我已经发现gdb可以连接到pthreads库的运行时完成后附加到进程。

“如果在链接要调试的应用程序时添加标志-lpthread到gcc(或g ++),问题就会消失。 资源