Здравствуйте дорогие линуксоиды.
А вот у меня есть такой вопрос.. Неделю уже бъюсь, не знаю
что делать.
Есть некая программа (язык C, использует SDL для графики и звука),
и она у меня работает нормально. А вот у другого человека,
который находится в другом городе, программа с завидной
постоянностью - где-то 1 запуск из 10 - глючит.
Глюк проявляется в том, что в какой-то момент исчезает звук.
В какой момент исчезнет звук - предсказать сложно.
Подробное логирование действий программы показывает, что
перестаёт вызываться call-back функция обслуживания звука в SDL.
При этом в error-консоли никаких ошибок не регистрируется.
И программа нормально продолжает работать без звука.
Звук в других приложениях есть и работает.
И вот вопрос - как понять, что же происходит? Логирование показывает
место ошибки (call-back функция перестаёт писать log-сообщения),
но не причину ошибки. Пользователь не настолько продвинут
чтобы запустить программу под gdb или valgrind, причем четко поймав
момент глюка. Да и даже еслиб я сел за его компьютер и имел весь
инструментарий, скорее, не смог бы этого сделать - по предыдущей причине
и по причине того, что например под valgrind дождаться глюка нереально
долго (тридиционное замедление выполнения в 25-50 раз).
Вот вопрос - как же поймать причину этого глюка? Причем сделать
это удаленно (у меня-то все работает). Пользователь умеет только
запускать программу.
Возможно, что-то портит память или какойто код неправильно работает
со стеком или еще чего... Как это узнать? Удаленно?
Удаленная отладка глюков (или "Лучше бы я Segmentation Fault словил"...)
Модератор: Модераторы разделов
-
Andrew S
- Сообщения: 225
- Статус: экспериментатор
- ОС: Conrad-Gentoo
Re: Удаленная отладка глюков
Копай в сторону gdb/gdbserver, он позволяет отлаживаться по TCP/IP
-
Zeus
- Сообщения: 694
Re: Удаленная отладка глюков
Может банально pause где-то вызывается?
Дык если есть хорошее TCP/IP соединение, то можно банально ssh'ем зайти туда и отлаживаться
-
xintrea
- Сообщения: 27
Re: Удаленная отладка глюков
Можно подробнее, что вы имеете в виду под "pause"?
Ну это далеко не банально. Это нереально. Пользователь умеет программы запускать
и мышой тыкать. Настроить отклик от win-модема, настроить соединение,
настроить iptables, установить gdb и gdbserver или открыть ssh - для
пользователя нереально. Да и связь оставляет желать лучшего.
Интересует программный метод или инструментарий, который позволит
получить лог/дамп, причем в нужный момент времени, когда произошел глюк,
в котором бы было видно, какая функция полезла не туда или кто обратился
к адресу где хранится вызываемый адрес callback SDL функции.
-
Zeus
- Сообщения: 694
Re: Удаленная отладка глюков
Ну функция SDL_PauseAudio.
Интересует программный метод или инструментарий, который позволит
получить лог/дамп, причем в нужный момент времени, когда произошел глюк,
в котором бы было видно, какая функция полезла не туда или кто обратился
к адресу где хранится вызываемый адрес callback SDL функции.
Тут я пас - такими делами не занимался.
-
Asgard
- Сообщения: 215
- Статус: North Valfader
Re: Удаленная отладка глюков
Интересует программный метод или инструментарий, который позволит
получить лог/дамп, причем в нужный момент времени, когда произошел глюк,
в котором бы было видно, какая функция полезла не туда или кто обратился
к адресу где хранится вызываемый адрес callback SDL функции.
хм, для этого обычно добавляют в программу набор контрольных точек, совершающих хоть ту же банальную запись в лог и компилирующихся только при явном указании debug режима.