Страница 1 из 1

GDB

Добавлено: 31 июл 2007, 13:48
kosyak
Решил изучить gdb, и вот застрял на простом (и не могу понять че нитак, короче торможу):
1. собираю тестовую программу
[kostya@kostya test3]gcc -g test.c -o test
2. Запускаю gdb
[kostya@kostya test3]$ gdb test
GNU gdb Red Hat Linux (6.3.0.0-1.122rh)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

(gdb) break 8
Breakpoint 1 at 0x80483c5: file test.c, line 8.
(gdb) r
Starting program: /home/kostya/projects/test3/test

[1]+ Stopped gdb test
[kostya@kostya test3]$

Так вот, немогу понять почему выходит из gdb, что еще не учел? Дистриб Fedora Core 5. Проделал тоже самое под debian - останавливается на нужной строке.

Добавлено: 31 июл 2007, 14:10
grub
Может дохнет до 8 строки? :)
Например, не находятся какие-нибудь либы?

Добавлено: 31 июл 2007, 14:22
kosyak
Вот под дебианом приветствие gdb
kostya@server2:~/test$ gdb test
GNU gdb 6.4.90-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

Там все ок.

Добавлено: 31 июл 2007, 15:08
grub
Я имел в виду либы не самого gdb, а либы, которые динамически подключает гоняемая под ним программа....

Впрочем, не спец в gdb, так что не уверен, что копать стоит в этом направлении. Но мне по-дилетантски кажется, что момент загрузки бинаря и момент динамической линковки вполне могут оказаться разными временными точками... И что выход из gdb может происходить, если строке в 7-й кода написано #include somelib.h, а вот в соответствующей точке выполнения (до вашего брейкпойнта, но после загрузки самого бинаря и демонстрации приветствия gdb) этой самой somelib в системе не обнаруживается...

Еще раз повторюсь, это может быть категорической неправдой.

Добавлено: 31 июл 2007, 17:21
kosyak
Ты прав, я думаю

[kostya@kostya test3]$ gdb test
(gdb) info sharedlibrary
No shared libraries loaded at this time.

Поставил ddd, в окне GDB Console
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x41000820 0x410151df Yes /lib/ld-linux.so.2
0x418a25f0 0x4198f9a8 Yes /lib/libc.so.6


Тогда, вопрос: что установить в настройках GDB по умолчанию. Хотя уже есть счастье - DDD (гуевая прога использующая GDB), под которой все шикарно работает :).