で構成されたクロス gdb があります--host=i686-pc-linux-gnu --target=powerpc-e300c3-linux-gnu
。を使用してリモート ボード上のアプリケーションを正しくデバッグできますが、とgdbserver
の間のバージョンの不一致に関するエラーが発生するため、スレッドを正しくデバッグできません ( 3 つのスレッドではなく 1 つのスレッドのみを認識します)。多分それはの異なるバージョンが原因です:私が持っているホストマシンとターゲットマシンで。ホストにgdbをリンクするためにホストを再構築しようとしましたが、それは地獄です。夢中になって再構築する前に、誰かがそれが問題であることを確認できますか?libthread_db
libpthread
gdb
libc
libc2.15
lib2.5
libc2.5
libc
質問する
5124 次
1 に答える
2
gdbをリンクするために、ホスト用にlibc2.5を再構築しようとしました
それはあなたが必要とするものではありません。
必要なのは、gdb がlibthread_db.so.1
target に一致するを見つけてロードすることlibpthread.so.0
です。
このためには、次のことが必要です。
libc-2.5
ホスト用にビルドし、- ステップ1で組み込まれた
libthread-db-search-path
ものを見つけるようにGDBを設定します。libthread_db.so.1
ステップ 1 で実際に libc 全体をビルドする必要はありません。次のようなもので十分です。
mkdir build && cd build
../configure --prefix=/usr
make -C ../nptl_db objdir=`pwd`
アップデート:
GDB 6.6 を使用していますが、libthread-db-search-path がありません。そのパスを指定する別の方法は何ですか?
そのGDBはただdlopen("libthread_db.so.1", ...)
. したがって、正しいものを見つけるには、libthread_db.so.1
調整する必要がありますLD_LIBRARY_PATH
。バッシュの使用:
LD_LIBRARY_PATH=/tmp/glibc-2.5/build/nptl_db gdb /path/to/target/a.out
于 2012-06-14T04:46:17.223 に答える