Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Отладка с++ приложения под линуксом
Новая тема
Ответить
цитата
18/10/12 в 14:13
atrius
Приветствую.
Такой вопрос: есть ли какие-нибудь инструменты, которые могут помочь с откладкой многопоточного с++ приложения, которое работает на сервере без гуи?
Смысл в том, что без нагрузки работает норм, под нагрузкой (много коннектов входящих на приложение) падает с seg fault. Уже месяц починить не можем =(
Заранее спасибо
цитата
18/10/12 в 14:38
dDan
gdb
цитата
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_
Жесть какая описана!
Всё делается не так.
Компилируешь программу с опцией -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_:
а под виндами так можно?
Так вопрос был про юникс же я так понял раз надо серверно и без гуев
удобее gdb я ничего не юзал еще
Новая тема
Ответить
Эта страница в полной версии