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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Нужен отладчик для работы из командной строки.  (Прочитано 920 раз)

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

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Здравствуйте!

Тестировал я своё клинт-серверное приложение на локалхосте и всё работало нормально. Как только закинул его на внешний виртуальный выделенный сервер, так начались segmentation fault-ы. Мне нужно узнать, в каком именно месте вылетает. Нужен какой-нибудь отладчик, который запускается из командной строки. Посоветуйте, что мне может помочь? И если можно, скиньте пожалуйста команды для работы с этим отладчиком. На выделенном сервере установлена Ubuntu14.04.0LTS.

Спасибо за внимание.

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Если на c/c++ то gdb. Для других языков могут быть специальные отладчики. Перед отладкой пересобери приложение с ключом -g
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Использую с++. Буду пользоваться gdb. Нашёл статью
https://habrahabr.ru/post/234237/
Остановился на втором пункте -
2. Создать в домашней директории файл .gdbinit со следующим содержимым:
Так вот у меня файл не создается. Он исчещает как только я его переименовываю в .gdbinit. Нужно как-то по другому его создавать?

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
gunsoy, нажми Ctrl + H и у тебя будут отображатся скрытые файлы. В юникс подобных осях файлы название которых начинаются с точки считаются скрытыми.

Пользователь добавил сообщение 27 Июля 2016, 18:35:07:
gunsoy, вот примеры http://rus-linux.net/nlib.php?name=/MyLDP/algol/gdb/otladka-s-gdb.html http://linux.yaroslavl.ru/docs/altlinux/doc-gnu/gdb/gdb.html https://habrahabr.ru/post/181738/
« Последнее редактирование: 27 Июля 2016, 18:35:07 от alsoijw »
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Спасибо! Файл отобразился.

Вот эту вот часть я не выполнял
(Нажмите, чтобы показать/скрыть)
Решил просто установить пакет python3, а он, как оказалось, уже был установлен.

Есть у меня ещё вопрос не совсем в тему. На сервере мне придётся компилировать с помощью командной строки. Почитал я статью как это делается. Есть один не совсем понятный момент. Вот как в IDE CodeBlocks я подключаю либы http://ipic.su/img/img7/fs/lib.1469635848.png

А вот как выглядит MakeFile
(Нажмите, чтобы показать/скрыть)

Правильно ли я указал либы? И куда вообще нужно вписывать ключи -pthread и -lcrypto?

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
gunsoy, я не уверен что тебе эта статья поможет. Питон трогать точно не нужно.
В отношении сборки: я не писал make файлы для c++ по этому могу ошибатся. https://habrahabr.ru/post/155201/ проверить работает или нет можно открыв в терминале каталог с Makefile и набрав там make. Если будут ошибки, то они отобразятся. Флаги надо добавить в строку вызова компилятора. В данном случае это $(CXX) -o $(TARGET) $(LDFLAGS) $(OBJECTS) $(LOADLIBES) $(LDLIBS) Не забудь про флаг -g
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Отладчик работает, но в момент краха программы выводит вот это


Program received signal SIGPIPE, Broken pipe.
[Switching to Thread 0xb4804b40 (LWP 9950)]
0xb7fdd424 in __kernel_vsyscall ()


То есть он мне не вывел информацию, где именно падает.

Запускал его так


gdb -q tcpserver


Потом


run


Как получить информацию о файле и строке, падения программы?

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
gunsoy, ты говорил чтобы компилятор писал отладочную информацию? Я не знаю выводит ли gdb стек вызова по дефолту, но если и не выводит, то его можно об этом попросить.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
alsoijw, спасибо за помощь. Нашёл команду, которая выводит стек вызова по строчно, начиная с самого конца.

Напишу для себя на будущее, на случай если забуду.


frame 0
frame 1
frame 2
.......


Наконец-то разобрался с отладкой!
« Последнее редактирование: 30 Июля 2016, 17:34:36 от gunsoy »

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

 

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