Возникла проблема следующего рода.
Имеется многопоточная программа, при вышибании ее из памяти в отладчике gdb не видно в каком месте произошел сбой, всегда пишет одно и тоже#0 0x2830731b in pthread_testcancel () from /usr/lib/libpthread.so.1
ОС FreeBSD5.4. Под FreeBSD 4.10 такого не было и я всегда видел место сбоя.
В чем проблема? как посмотреть где произошел сбой?Инфо о системе:
% uname -a
FreeBSD august4u.ru 5.4-RELEASE FreeBSD 5.4-RELEASE #0: Sun May 8 10:21:06 UTC 2005 root@harlow.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386
% gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.2 [FreeBSD] 20040728
%Компилирую естественно с ключом -g
info threads
потом попробовать попереключаться между потоками командой
thread X
если не найдется, значит, стек портится - хотя вряд ли.
Но если дело в порче стека, то поможет либо valgrind (но не под фрей, разумеется),
либо тривиальная тупая трассировка выполнения в файлик.
>Но если дело в порче стека, то поможет либо valgrind (но не
>под фрей, разумеется),Под фрибсд valgrind отлично работает :) /usr/ports/devel/valgrind
gdb>thread apply al bt full
кажись так, мож больше инфы даст