アプリケーションが実行されている ARM ボードで OpenEmbedded ベースの Linux を実行しています。以前はカーネル 2.6.35、gdb 6.8、gcc 4.3 を実行していました。最近、システムをカーネル 2.6.37、gdb 7.4 (7.3 も試しました)、gcc 4.6 に更新しました。
現在、私のアプリケーションは (ARM ボード上で) もうデバッグできません。gdb で実行しようとするたびに、「gdb: 新しいスレッドが見つかりません: 一般的なエラー」というエラーが表示されます。アプリケーションは pthreads を利用し、pthreads に対してリンクします (readelf は依存関係として libpthread.so.0 をリストします)。これまでに見つけた提案された解決策はすべて、私がすでに行っている pthread へのリンクを推奨しています。私が見つけた他の推奨事項は、 LD_PRELOAD=/lib/libpthread.so.0 を使用することでした。これは私にとって何の違いもありません。
アプリケーションの x86 ビルドのデバッグは問題なく動作します。
編集:最初の回答で提起された質問に答えるために、ターゲット(ARM)でgdbを使用しています。つまり、クロスgdbは使用していません。また、GNU/Linux 2.6 用の libpthread.so.0 (/lib/libpthread-2.9.so: ELF 32 ビット LSB 共有オブジェクト、ARM、バージョン 1 (SYSV)、動的にリンクされた (共有ライブラリを使用)) も削除していません。 16、剥がされていない)。glibc はバージョン 2.9 のままで、更新には Linux イメージ全体の再コンパイルが含まれていました。
EDIT2: /lib/libthread-db* を削除すると、デバッグが可能になります (結果として警告が表示され、明らかに一部の機能が動作しなくなります)
EDIT3: set debug libthread-db 1 を使用すると、次のようになります:
Starting program: /home/root/app
Trying host libthread_db library: libthread_db.so.1.
Host libthread_db.so.1 resolved to: /lib/libthread_db.so.1.
td_ta_new failed: application not linked with libthread
thread_db_load_search returning 0
Trying host libthread_db library: libthread_db.so.1.
Host libthread_db.so.1 resolved to: /lib/libthread_db.so.1.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
warning: Unable to set global thread event mask: generic error
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 0.
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 1.
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 2.
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 3.
thread_db_load_search returning 1
Warning: find_new_threads_once: find_new_threads_callback: cannot get thread info: generic error
Found 0 new threads in iteration 0.
Cannot find new threads: generic error
(gdb) Write failed: Broken pipe