web-dev-qa-db-ja.com

gdb:新しいスレッドが見つかりません:一般的なエラー

Pthreadにリンクされている.soをロードするプログラムに対してGDBを実行すると、GDBは「新しいスレッドが見つかりません:一般的なエラー」というエラーを報告します。

私が実行する実行可能ファイルはpthreadとリンクされていないことに注意してください。

手がかりはありますか?

 $ gdb --args lua -lluarocks.require 
 GNU gdb(GDB)7.0-ubuntu 
 Copyright(C)2009 Free Software Foundation、Inc。
 License GPLv3 +:GNU GPLバージョン3以降
これはフリーソフトウェアです。自由に変更して再配布できます。
許可されている範囲で、保証はありません。詳細については、「showcopying」
および「showwarranty」と入力してください。
このGDBは「x86_64-linux-gnu」として構成されています。
バグ報告の手順については、参照:
 <http://www.gnu.org/software/gdb/bugs/> ... 
/usr/bin/luaからシンボルを読み取っています...(デバッグシンボルが見つかりません)...完了。
(gdb)run 
開始プログラム:/ usr/bin/lua -lluarocks.require 
 Lua 5.1.4 Copyright(C)1994-2008 Lua .org、PUC-Rio 
> require'ev '
 [libthread_dbを有効にしたスレッドデバッグ] 
新しいスレッドが見つかりません:一般的なエラー
(gdb)q 
デバッグセッションがアクティブです。
 
下位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 
コードネーム:karmic 
28

これも機能します:

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

29
ensonic

64ビットUbuntuユーザーはこれを行う必要があります:

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

次のテキストを含むホームディレクトリに.gdbinitを作成することもできます。

set env LD_PRELOAD /lib/libpthread.so.0
14
jbaylina

アプリケーションが「突然」pthreadに依存するようになると、GDBは気に入らないようです。

私が見つけた唯一の回避策は、ホストアプリケーションをpthreadにリンクすることです。

どちらかというと悲しい...

6

Pthreadsライブラリへのランタイムリンクが完了した後、gdbがプロセスにアタッチできることがわかりました。

5
Gearoid Murphy

「デバッグ対象のアプリケーションをリンクしているときにフラグ-lpthreadをgcc(またはg ++)に追加すると、問題は解消されます。」 ソース

2
Stas Yak