GDB

Все о программировании под *nix
kosyak
Заглянувший
Сообщения: 3
Зарегистрирован: 12 июл 2007, 13:29
Контактная информация:

GDB

Сообщение 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 - останавливается на нужной строке.
Hе так стpашен Programmer, как его Software...

Аватара пользователя
grub
Неотъемлемая часть форума
Сообщения: 849
Зарегистрирован: 13 сен 2006, 10:29
Откуда: Минск
Контактная информация:

Сообщение grub »

Может дохнет до 8 строки? :)
Например, не находятся какие-нибудь либы?
Змагайся і адпачывай!

kosyak
Заглянувший
Сообщения: 3
Зарегистрирован: 12 июл 2007, 13:29
Контактная информация:

Сообщение 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".

Там все ок.
Hе так стpашен Programmer, как его Software...

Аватара пользователя
grub
Неотъемлемая часть форума
Сообщения: 849
Зарегистрирован: 13 сен 2006, 10:29
Откуда: Минск
Контактная информация:

Сообщение grub »

Я имел в виду либы не самого gdb, а либы, которые динамически подключает гоняемая под ним программа....

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

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

kosyak
Заглянувший
Сообщения: 3
Зарегистрирован: 12 июл 2007, 13:29
Контактная информация:

Сообщение 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), под которой все шикарно работает :).
Hе так стpашен Programmer, как его Software...

Ответить