Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Странное поведение gdb  (Прочитано 749 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NameUnknown

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Странное поведение gdb
« : 08 Апреля 2011, 11:44:02 »
Мой дистрибутив Ubuntu 9.10.
Программа на Си, компилируется в 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

Я уже делал папку с иходниками и программой рабочей директорией, но ничего не помогает. И никак не пойму, в чём же дело. Оно понятно, что я нубьё, но согласно мануалу, всё должно работать.

/*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/

P.S. Я уже создавал такую же тему на другом форуме, и там мне ответили следующее:

Цитировать
А вы в курсе, что в Ubuntu нельзя ничего компилировать и устанавливать из исходников?

Она рассчитана на установку .deb пакетов.

Там даже специальные фичи введены против любителей покомпилить.

Если вам нужен дистрибутив Linux для программирования и компилляции то советую Gentoo или Slackware.

Ясное дело, я в шоке. Дистрибутив менять не хочу, а программировать хочу. Затем ответивший товарищ всё же добавил:

Цитировать
Только нужно доустановить все необходимое.
Например все 3D эффекты в фильме Аватар делались в Ubuntu.
Что именно, подсказать не могу, потому что не знаю - я далек от программирования. Советую сходить на форум программистов. Погуглите - их много.

Я уже стёр установленный gdb и откомпилировал из исходников. Но всё то же самое.
Скажите, не стал ли я жертвой троллинга или такого же "умника", как я сам, и как мне разрулить свою проблему?

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Странное поведение gdb
« Ответ #1 : 08 Апреля 2011, 13:40:06 »
Я тоже в шоке, всё работает
yurik@yurik-pc:~$ cat main.c
#include <stdio.h>

int main()
{
    printf("Hello, world\n");
    return 0;
}
yurik@yurik-pc:~$ gcc -Wall -Wextra -O0 -g  main.c -o main
yurik@yurik-pc:~$ gdb
GNU gdb (GDB) 7.2-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) file main
Reading symbols from /home/yurik/main...done.
(gdb) b main
Breakpoint 1 at 0x4004f8: file main.c, line 5.
(gdb) run
Starting program: /home/yurik/main

Breakpoint 1, main () at main.c:5
5     printf("Hello, world\n");
(gdb) c
Continuing.
Hello, world

Program exited normally.
(gdb) quit
yurik@yurik-pc:~$

Оффлайн NameUnknown

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Странное поведение gdb
« Ответ #2 : 08 Апреля 2011, 13:44:43 »
О, он находит функции, какие указываешь. Но он не ставит точки останова в той строчке, которая мне нужна.

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Странное поведение gdb
« Ответ #3 : 08 Апреля 2011, 13:48:14 »
Я не фанат голого gdb воспользуйся чем нибудь графическим. Можно в составе любой IDE
Я рекомендую NetBeans. простая и понятная. без закидонов умеет удалённую отладку. ставит брякпоинт в любой строчке (ну не совсем в любой)

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.