Странное поведение gdb
Правила форума
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
-
- Интересующийся
- Сообщения: 3
- Зарегистрирован: 02 мар 2011, 19:34
- Контактная информация:
Странное поведение gdb
Линукс для меня платформа новая, но подкупающая в плане программирования. и всё же... Когда понадобилась отладка, начались проблемы. Программа на Си, компилируется в gcc.
Компилирую с флагом -g, как полагается. Запускаю прогу в gdb.
И тут же выяснятеся, что на команды b и l отладчик реагирует неадекватно.
Исходные файлы следующие:
main.c
maps.c
graphics.c
maps.h
graphics.h
В maps.c есть функция, которая ведёт себя не так, как мне хотелось бы. Хочу поставить там точки останова. Ввожу:
b maps.c:16
На что мне отвечают:
No source file named maps.c.
Make breakpoint pending on future shared library load? (y or [n]) - я отвечаю n, но, может, неправильно делаю?
В самом main останов ставится только на функцию main, а ставить на какую-либо строчку бесполезно, выводит следующее:
Note: breakpoint 1 also set at pc 0x80489e0.
Breakpoint 2 at 0x80489e0: file ../sysdeps/i386/elf/start.S, line 16.
И это явно не в файле main.c!
В ответ на команду l:
6 in ../sysdeps/i386/elf/start.S
Я уже делал папку с иходниками и программой рабочей директорией, но ничего не помогает. И никак не пойму, в чём же дело. Оно понятно, что нубьё, но согласно мануалу, всё должно работать.
Мой дистр Ubuntu 9.10.
Компилирую с флагом -g, как полагается. Запускаю прогу в gdb.
И тут же выяснятеся, что на команды b и l отладчик реагирует неадекватно.
Исходные файлы следующие:
main.c
maps.c
graphics.c
maps.h
graphics.h
В maps.c есть функция, которая ведёт себя не так, как мне хотелось бы. Хочу поставить там точки останова. Ввожу:
b maps.c:16
На что мне отвечают:
No source file named maps.c.
Make breakpoint pending on future shared library load? (y or [n]) - я отвечаю n, но, может, неправильно делаю?
В самом main останов ставится только на функцию main, а ставить на какую-либо строчку бесполезно, выводит следующее:
Note: breakpoint 1 also set at pc 0x80489e0.
Breakpoint 2 at 0x80489e0: file ../sysdeps/i386/elf/start.S, line 16.
И это явно не в файле main.c!
В ответ на команду l:
6 in ../sysdeps/i386/elf/start.S
Я уже делал папку с иходниками и программой рабочей директорией, но ничего не помогает. И никак не пойму, в чём же дело. Оно понятно, что нубьё, но согласно мануалу, всё должно работать.
Мой дистр Ubuntu 9.10.
Re: Странное поведение gdb
А вы в курсе, что в Ubuntu нельзя ничего компилировать и устанавливать из исходников?
Она рассчитана на установку .deb пакетов.
Там даже специальные фичи введены против любителей покомпилить.
Если вам нужен дистрибутив Linux для программирования и компилляции то советую Gentoo или Slackware.
Она рассчитана на установку .deb пакетов.
Там даже специальные фичи введены против любителей покомпилить.
Если вам нужен дистрибутив Linux для программирования и компилляции то советую Gentoo или Slackware.
-
- Интересующийся
- Сообщения: 3
- Зарегистрирован: 02 мар 2011, 19:34
- Контактная информация:
Re: Странное поведение gdb
Ничего себе, очень приятно! Зачем же такой дистрибутив? То есть я с этим дистрибутивом могу забыть о программировании?
-
- Интересующийся
- Сообщения: 3
- Зарегистрирован: 02 мар 2011, 19:34
- Контактная информация:
Re: Странное поведение gdb
Раз уж такая бодяга... Про слаку читал, и про генту читал, пробовать не хочу, нет времени с ними возиться. А в генту всё ПО компилируется, и это очень долго. А что можете сказать относительно Red Hat?
Re: Странное поведение gdb
Нет, только нужно доустановить все необходимое.То есть я с этим дистрибутивом могу забыть о программировании?
Например все 3D эффекты в фильме Аватар делались в Ubuntu.
Что именно, подсказать не могу, потому что не знаю - я далек от программирования. Советую сходить на форум программистов. Погуглите - их много.
Такой операционки давно нет, из бесплатных клонов лучше всех Fedora, например наш отечественный RFRemix 14 http://fedoriada.ru. Есть еще клон CentOS, на нем сам Линус Торвальдс работает, предназначенный специально для ученых и разработчиков.А что можете сказать относительно Red Hat
Очень советую Slackware (она сочетает простоту установки и возможность компилировать из исходников) - попробуйте для начала ее LiveCD Slax.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Странное поведение gdb
А вот это - очень странно слышатьdmitriev писал(а):А вы в курсе, что в Ubuntu нельзя ничего компилировать и устанавливать из исходников?
Она рассчитана на установку .deb пакетов.
Там даже специальные фичи введены против любителей покомпилить.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Странное поведение gdb
А тема обсуждения получается - хорошаякипящий чайник писал(а):Ничего себе, очень приятно! Зачем же такой дистрибутив? То есть я с этим дистрибутивом могу забыть о программировании?
Проверяем:
- беру первый попавшийся исходник - попался сервер NTP:
Код: Выделить всё
olej@atom:/usr/src/ntp-4.2.6p3$ pwd
/usr/src/ntp-4.2.6p3
Код: Выделить всё
olej@atom:/usr/src/ntp-4.2.6p3$ time ./configure
...
configure: creating ./config.status
config.status: creating libopts/Makefile
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
real 1m32.255s
user 1m20.025s
sys 0m30.922s
olej@atom:/usr/src/ntp-4.2.6p3$ time make -j
...
real 0m7.355s
user 0m6.620s
sys 0m1.976s
olej@atom:/usr/src/ntp-4.2.6p3$ sudo make install
...
Код: Выделить всё
olej@atom:/usr/src/ntp-4.2.6p3$ which ntpd
/usr/local/bin/ntpd
Код: Выделить всё
olej@atom:/usr/src/ntp-4.2.6p3$ sudo make uninstall
olej@atom:/usr/src/ntp-4.2.6p3$ which ntpd
olej@atom:/usr/src/ntp-4.2.6p3$
Re: Странное поведение gdb
Точно, всё как было? ;)Olej писал(а):....
- и возвращаем всё взад как было:Код: Выделить всё
olej@atom:/usr/src/ntp-4.2.6p3$ sudo make uninstall olej@atom:/usr/src/ntp-4.2.6p3$ which ntpd olej@atom:/usr/src/ntp-4.2.6p3$
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Странное поведение gdb
Я не могу сказать гарантировано , но:Ali писал(а):Точно, всё как было? ;)Olej писал(а):....
- и возвращаем всё взад как было:Код: Выделить всё
olej@atom:/usr/src/ntp-4.2.6p3$ sudo make uninstall olej@atom:/usr/src/ntp-4.2.6p3$ which ntpd olej@atom:/usr/src/ntp-4.2.6p3$
- на этом компьютере у меня заведомо не устанавливался ntpd (из репозитариев Ubuntu)...
- README пакета утверждает, что цель uninstall деинсталлирует то, что поставлено (это сверх того, что я раньше ещё в Makefile смотрел и нашёл эту цель)
- до инсталляции which на путях поиска не знает ntpd, после инсталляции - находит, после деинсталляции - снова нет...
... то, что после любой деинсталляции исходников остаются неустранённые "следы" типа записей в /etc/ld.so.conf.d или ld.so.cache - это да, бывает, но это ... дела привычные для машины для разработки, а не для эксплуатации
В любом случае, проверено было, что в Ubuntu точно так же можно компилироваться и устанавливаться, как и в любом другом дистрибутиве... вопреки тому, что было сказано выше, в начале темы - а то я просто уже шёл с намерением снести нахрен Ubuntu, зачем мне такой дистрибутив?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей