[sisyphus] Re: GDB/debug info problems

Someone Unknown =?iso-8859-1?q?someone=5Flists_=CE=C1_bk=2Eru?=
Вт Июн 17 10:54:39 MSD 2003


В сообщении от 16 Июнь 2003 23:33 Serge Pavlovsky написал(a):
> В Пнд, 16.06.2003, в 20:52, Mikhail Zabaluev пишет:
> > Hello Serge,
> >
> > On Mon, Jun 16, 2003 at 07:40:42PM +0300, Serge Pavlovsky wrote:
> > > давно надо. у нашего gdb есть еще трабл - посмотреть содержимое string
> > > невозможно при использовании формата по умолчанию. я не помню, это
> > > stabs или dwarf-2, но надо указать другой и тогда все ок.
> >
> > Это std::string? Так у него содержимое может быть вполне нетривиально :)
>
> оно как раз тривиальное и я же написал что по другому его видно.
>
> [22:30:51 pal на localhost ~/tmp]$ cat a.cpp
> #include <string>
> int main ( ) {
> 	std :: string s = "123";
> 	return 0;
> }
> [22:30:57 pal на localhost ~/tmp]$ g++ -g3 a.cpp -o a
> [22:31:05 pal на localhost ~/tmp]$ gdb -q a
> (gdb) b 4
> Breakpoint 1 at 0x80485b8: file a.cpp, line 4.
> (gdb) r
> Starting program: /home/pal/tmp/a
>
> Breakpoint 1, main () at a.cpp:4
> 4		return 0;
> (gdb) p s
> $1 = {static npos = Cannot access memory at address 0x82b5588
> (gdb) The program is running.  Exit anyway? (y or n) y
> [22:31:20 pal на localhost ~/tmp]$ g++ -g3 -gstabs+ a.cpp -o a
> [22:31:26 pal на localhost ~/tmp]$ gdb -q a
> (gdb) b 4
> Breakpoint 1 at 0x80485b8: file a.cpp, line 4.
> (gdb) r
> Starting program: /home/pal/tmp/a
>
> Breakpoint 1, main () at a.cpp:4
> 4		return 0;
> (gdb) p s
> $1 = {static npos = 4294967295, _M_dataplus = {<allocator<char>> = {<No
> data fields>}, _M_p = 0x804987c "123"},
>   static _S_empty_rep_storage = {0, 0, 0, 0}}
> (gdb) The program is running.  Exit anyway? (y or n) y

Это все еще цветочки... У меня есть бинарник (многопоточка), который вообще с 
gdb интересные вещи вытворяет...

$ gdb ./ketchup
GNU gdb ALT Linux (5.2.1-alt2)
Copyright 2002 Free Software Foundation, Inc.

/* ...skipped... */

(gdb) run
Starting program: /home/someone/src/ketchup_RB~/source/server/ketchup
[New Thread 1024 (LWP 16070)]

/* отладочный вывод сервера skipped */

[1]+  Stopped                 gdb ./ketchup

/* прошу заметить - я никого в background на уводил... */

$ fg
gdb ./ketchup
[New Thread 2049 (LWP 16071)]
[New Thread 1026 (LWP 16072)]

Program received signal SIGTTOU, Stopped (tty output).
[Switching to Thread 1024 (LWP 16070)]
0x402057a4 in write () from /lib/libc.so.6
(gdb) handle SIGTTOU nostop noprint pass
Signal        Stop      Print   Pass to program Description
SIGTTOU       No        No      Yes             Stopped (tty output)
(gdb) cont
Continuing.
Cannot find user-level thread for LWP 16072: generic error
(gdb) kill
Kill the program being debugged? (y or n) y
Cannot find thread 1024: generic error
(gdb) quit
The program is running.  Exit anyway? (y or n) y
Cannot find thread 1024: generic error
(gdb)

И все. Только killall gdb помогает. К сожалению, исходники предоставить не 
могу - собственность компании. Но если есть какие-то идеи, что это за хрень и 
как с ней бороться - буду рад любым советам. BTW, те же самые исходники 
собирал на Соляре - и под gdb 5.3 (target=i386-pc-solaris2.8) результат тот 
же.

-- 
Regards,
Someone


Подробная информация о списке рассылки Sisyphus