pthread を使ったプログラムが gdb でdebugできない.

pthreadを使ったプログラムをgdbデバッグしようとすると,見慣れないエラーが出る.

Program terminated with signal SIGTRAP, Trace/breakpoint trap.

どうも /lib/tls/libpthread-2.3.3.so が strip されていると, gdbデバッグできなくなるらしい.

glibcrpm のパッケージングの問題ということで,渋々ながら,rpm の spec や rpmbuildのログを眺めてみる. どうも rpmbuild は, make install をした後に/usr/lib/rpm/brp-strip-shared というスクリプトで strip を行っているらしい.

というわけで, /usr/lib/rpm/brp-strip-shared を行う前の段階で rpmbuild を止めて strip前の libpthread.so などを取りだし,手動で/lib/tls 以下にコピーして,解決 (^o^/~~.

肝心のバグは,ポインタ変数の初期化し忘れという初歩的なミスだった.gdb が普通に動けば数分で解決できたのになぁ.