[sisyphus] C++ & gdb
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вт Сен 24 18:00:41 MSD 2002
On Tue, 24 Sep 2002 13:52:31 +0400
"Dmitry V. Levin" <ldv на altlinux.org> wrote:
> On Mon, Sep 23, 2002 at 10:57:18PM +0300, Sanja Byelkin wrote:
> > Доброе (РЕАЛЬНО!!!) время суток!
> >
> > On Mon, Sep 23, 2002 at 10:26:24PM +0400, Dmitry V. Levin wrote:
> > [skip]
> > > Удалось воспроизвести.
> > >
> > > Workaround:
> > > 1. установить пакет glibc-core-debug и
> > > 2. запускать gdb/ddd с LD_LIBRARY_PATH=/usr/lib/debug
> >
> > _ОГРОМНОЕ_ спасибо! это действительно помогло (осталось только подумать как
> > это пристроить удобнее - но это уже детали)
>
> Честно говоря, мне пока что не ясно, почему эту нужно делать для
> многопоточных программ (для обычных - не нужно).
> Возможно, в по'strip'анном libpthread удалена какая-то важная для gdb
> информация. Если кто-нибудь в курсе, напишите.
Я, кажется, понял, в чем дело. В gdb поддержка потоков теперь сделана
через libthread_db.so.1 (linuxthreads_db в glibc), а там в коде можно
обнаружить, например, следующее:
/* Get the global event mask. This is one of the variables which
are new in the thread library to enable debugging. If it is
not available we cannot debug. */
if (ps_pglobal_lookup (ps, LIBPTHREAD_SO,
"__pthread_threads_events", &addr) != PS_OK)
return TD_NOLIBTHREAD;
Символ __pthread_threads_events встречается в libpthread.so.0 только в
отладочной информации - он не экспортируется (и правильно - программам,
кроме отладчика, нечего делать в этих внутренностях). Есть еще несколько
аналогичных символов. Поэтому после отрезания отладочной информации
libthread_db.so.1 просто не видит потоков.
В сборке glibc-2.2.5-alt12 (Master updates) /lib/libpthread.so.0
содержит отладочную информацию, поэтому там эта проблема не возникает
(если только не добавить к нему glibc-core-i686 из Сизифа - там
/lib/i686/libpthread.so.0 обрезанный).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип : application/pgp-signature
Размер : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20020924/32927eae/attachment-0011.bin>
Подробная информация о списке рассылки Sisyphus