Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 18/10/12 в 14:13 |
Приветствую.
Такой вопрос: есть ли какие-нибудь инструменты, которые могут помочь с откладкой многопоточного с++ приложения, которое работает на сервере без гуи?
Смысл в том, что без нагрузки работает норм, под нагрузкой (много коннектов входящих на приложение) падает с seg fault. Уже месяц починить не можем =(
Заранее спасибо
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 18/10/12 в 14:38 |
gdb
|
|
|
|
Web Developer С++
С нами с 25.11.01
Сообщения: 859
Рейтинг: 759
|
Добавлено: 18/10/12 в 15:16 |
Скорей всего вы где-то используете нереентрантные функции.
Часто эту ошибку не просто повторить чтоб продебагить. Я в таких случаях сначала ищу где падает с помощью спец. дебагов. Потом ставлю дебаги по переменным, чтоб выяснить почему.
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 18/10/12 в 16:47 |
gdb попробуем
А что имелось ввиду под спец дебагом? Что-то типа записи лога при вызове каждой функциии и потом смотреть в какой упало?
|
|
|
|
Web Developer С++
С нами с 25.11.01
Сообщения: 859
Рейтинг: 759
|
Добавлено: 18/10/12 в 19:25 |
atrius писал: | А что имелось ввиду под спец дебагом? Что-то типа записи лога при вызове каждой функциии и потом смотреть в какой упало? |
Типа того.
Объявляешь глобальную переменную. Расставляешь по коду каждые несколько строчек код, который будет записывать номер строки в коде в эту переменную. Перехватываешь сигналы, при 11 пишешь значение этой переменной в файл. В файле будет видно до какой строки выполнилась программа прежде чем упасть.
Выводить что-то на экран или открывать и писать файлы в потоках не используя синхронизацию нельзя.
|
|
|
|
С нами с 15.07.11
Сообщения: 3076
Рейтинг: 198
|
Добавлено: 18/10/12 в 23:16 |
Жесть какая описана!
Всё делается не так.
Компилируешь программу с опцией -g.
Включаешь core dump'ы - ulimit -s 9999999 у меня на ubuntu
Ждешь пока прога упадёт и отбросит кору
запускаешь
gdb program-executable core-dump-file-path
> backtrace
выведет тебе на каком месте прога упала, можно посмотреть параметры вызовов функций и значения всех переменных!
|
|
|
|
Web Developer С++
С нами с 25.11.01
Сообщения: 859
Рейтинг: 759
|
Добавлено: 18/10/12 в 23:31 |
uname_: а под виндами так можно?
|
|
|
|
С нами с 15.07.11
Сообщения: 3076
Рейтинг: 198
|
Добавлено: 19/10/12 в 12:36 |
DF™ писал: | uname_: а под виндами так можно? |
Без понятия если честно, под винды на плюсах не довелось писать. Но вроде как коредампов не предусмотрено под винды, видимо есть что-то другое.
То что я написал это только для юниксов.
|
|
|
|
С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430
|
Добавлено: 19/10/12 в 12:53 |
DF™ писал: | uname_: а под виндами так можно? |
Так вопрос был про юникс же я так понял раз надо серверно и без гуев
удобее gdb я ничего не юзал еще
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |