Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Отладка с++ приложения под линуксом
цитата
18/10/12 в 14:13
 atrius
Приветствую.
Такой вопрос: есть ли какие-нибудь инструменты, которые могут помочь с откладкой многопоточного с++ приложения, которое работает на сервере без гуи?
Смысл в том, что без нагрузки работает норм, под нагрузкой (много коннектов входящих на приложение) падает с seg fault. Уже месяц починить не можем =(
Заранее спасибо
цитата
18/10/12 в 14:38
 dDan
gdb smail54.gif
цитата
18/10/12 в 15:16
 DF™
Скорей всего вы где-то используете нереентрантные функции.
Часто эту ошибку не просто повторить чтоб продебагить. Я в таких случаях сначала ищу где падает с помощью спец. дебагов. Потом ставлю дебаги по переменным, чтоб выяснить почему.
цитата
18/10/12 в 16:47
 atrius
gdb попробуем
А что имелось ввиду под спец дебагом? Что-то типа записи лога при вызове каждой функциии и потом смотреть в какой упало?
цитата
18/10/12 в 19:25
 DF™
atrius писал:
А что имелось ввиду под спец дебагом? Что-то типа записи лога при вызове каждой функциии и потом смотреть в какой упало?

Типа того.
Объявляешь глобальную переменную. Расставляешь по коду каждые несколько строчек код, который будет записывать номер строки в коде в эту переменную. Перехватываешь сигналы, при 11 пишешь значение этой переменной в файл. В файле будет видно до какой строки выполнилась программа прежде чем упасть.
Выводить что-то на экран или открывать и писать файлы в потоках не используя синхронизацию нельзя.
цитата
18/10/12 в 23:16
 uname_
Жесть какая описана! icon_smile.gif

Всё делается не так.
Компилируешь программу с опцией -g.
Включаешь core dump'ы - ulimit -s 9999999 у меня на ubuntu
Ждешь пока прога упадёт и отбросит кору
запускаешь
gdb program-executable core-dump-file-path
> backtrace
выведет тебе на каком месте прога упала, можно посмотреть параметры вызовов функций и значения всех переменных!
цитата
18/10/12 в 23:31
 DF™
uname_: а под виндами так можно?
цитата
19/10/12 в 12:36
 uname_
DF™ писал:
uname_: а под виндами так можно?

Без понятия если честно, под винды на плюсах не довелось писать. Но вроде как коредампов не предусмотрено под винды, видимо есть что-то другое.

То что я написал это только для юниксов.
цитата
19/10/12 в 12:53
 dDan
DF™ писал:
uname_: а под виндами так можно?

Так вопрос был про юникс же я так понял раз надо серверно и без гуев icon_smile.gif
удобее gdb я ничего не юзал еще


Эта страница в полной версии