2011-01-26 21 views
2

組み込みファイルシステムでは、libthread_dbを取り除きたいと思います。私の理解 は、pthreadを使用してプログラムをデバッグする場合にのみ必要であるということでした。このようなプログラムを起動すると、セグメンテーション違反が発生し、libthread_dbを取り除く方法

  • libthread_dbは(プログラムの開発を使用して、最初のpthreadが起動される)ブート時に存在しない場合:しかし、ここで私の観察です。

  • libthread_dbを後で追加すると(つまり、pthreadプログラムがsegfaultになった後で)何も変更されません。 pthreadを使用するすべてのプログラムは、起動時にセグメンテーションされます。

libthread_dbは、pthreadを使用してあらゆる種類のプログラムを実行するために不可欠です。

+0

を使用する必要があり、私はlibthread_dbにリンクスレッド化されたプログラムを見つけることができません。どのようなCライブラリを使用していますか? –

答えて

5

libthread_dbは、ではありません。スレッドプログラムによって使用されます。デバッガで使用されるのはのみです。

libthread_dbが何らかの形でpthreadsを使用してプログラムを実行する必要があるというあなたの主張は間違っています。 libthread_dbがシステムから削除されたときにpthreadプログラムがクラッシュした場合は、以外のが埋め込み対象で壊れています。 libthread_dbの削除は、それ以外の何かを引き起こすだけです。

通常のLinuxシステムでpthreadプログラムをビルドしてください。 straceの下でそのプログラムを実行し、libthread_dbstrace出力に表示されないことを確認します。 /lib/libthread_db.so.1の名前を変更して、テストプログラムが正常に動作することを確認します。

+0

+1、彼はおそらくスレッドのlibがどのようにコンパイルされたかで、何か他のことが起こっています。 –

+0

libthread_dbが必要でないことを確認してください。私はさらなるテストを行います – shodanex

関連する問題