![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
laa88rf |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Привет всем.
Как и многие программеры столкнулся с вопросом - как дебажить прогу, которая вылетает по ошибке или которой не хватает чего-то, но при этом она работает, или аналогичные ситуации. Простейший пример ситуации - программа запущена, но как только пользователь вводит логин и пароль, нажимает Ок, диалог ввода расходится и на экране появляет только фоновая картинка приложения. Вариантов тут 2, которые между собой не связаны: 1. Криворукость программера. 2. Отключение сервера БД, где лежат логины/пароли. Второй пример - как в играх, игра вылетела по ошибке - получи запись в *.log Как можно записать конкретно что произошло? Заранее благодарю за ответ. ЗЫ. извиняйте за корявость текста. Только начинаю программить. |
|
|
![]() |
molchanoviv |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: ![]() ![]() ![]() |
Не совсем понял вопроса, но постараюсь ответить. Дебажить просто. Только нужно соблюсти некоторые условия. В проекте должно быть указано GONFIG += debug и у тебя должен быть помощник отладчика(в SDK это все есть). Затем просто в креаторе выбираешь режим Дебаг(в колонке слева) и вперед. Про сервер БД вообще не понял, но думаю что стоит почитать про QSqlError.
|
|
|
laa88rf |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Скорее всего вопроса не поняли.
Есть готовый проект, который работает у людей, но время от времени, по каким либо причинам (которые заранее не известны) происходят глюки. Надо отследить эти глюки. Для этого и предлагаю делать записи в логи. по сути мне надо логгирование ошибок/багов/глюков в программе.
Причина редактирования: очепятки
|
|
|
kwisp |
![]()
Сообщение
#4
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
laa88rf,
ну так логируй их эти ошибки и глюки в файл с временными метками. потом отследишь что случилось в такое то время. |
|
|
laa88rf |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
А если без времени обойтись?
|
|
|
kwisp |
![]()
Сообщение
#6
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
laa88rf, ну
время в сислоге можно натсроить а вообще есть уровни отладки разные. отключаемые неотключаемые и проч. у нас в оганициции в лог сообщения пишут с метками " m " - внут сообщения " i ' - информацинные " p ' - старты стопы " d " - чисто отладочные для разработчика " w " - предупреждения и ошибки после которых возможно продолжить работу " e " - критические ошибки после которых работу продолжить невозможно |
|
|
laa88rf |
![]()
Сообщение
#7
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
а как вызвать сислог на виндомашинах?
или вы предлагаете обращаться к урналу windows? |
|
|
kwisp |
![]()
Сообщение
#8
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
что значит вызвать сислог?
на определнный порт по определнным правилам шлешь сообщения в сеть на опред ip где запущен сислог. в общем логе сислога будет отобрадаться имя твоей программы и уровни сообщений, время. потом все это можно grep проходить и выяснять что и когда и по каким причинам произошло. П.С. не пойму последовательность и причины вопросов. может ты просто не знаешь как сообщение лог вывести ? |
|
|
laa88rf |
![]()
Сообщение
#9
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Вспомнил, что юниксы могут слушать на интерфейсе. Но вопрос в другом.
Мне нужно локально производить запись в файл вего происходящего с программой. Тот же самый биллинг от нетапа может сам логгировать свои логи, баги и т.п. Те же самые игрушки могут мониторить, что точка входа в библиотеку не правильная и пишут это в свой лог, что видеокарта дохлая и "не потянет" такое разрешение/детализацию и т.п., что если текстура не построилась, то она пишет все в лог. Простой пример - Counter Strike с включенной консолью. Пишет какую текстуру грузит, что с текстурой в процессе загрузки, кто подключился и когда, причем берется факт подключения, а по факту время, но не наоборот. И т.п. |
|
|
kwisp |
![]()
Сообщение
#10
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
laa88rf,
чет туговат я стал, ниче не пойму что те надо. почитай про методику отладки в ассистенте. Debugging Techniques - называется может тебя макросы по типу Q_ACCERT интерисуют ? |
|
|
Iron Bug |
![]()
Сообщение
#11
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
да, я что-то тоже читала-читала вопрос - так и не поняла, что автор хочет.
я так понимаю: есть прога, есть её полный код, прога глючит, надо вставить в код логирование в местах ошибок? ну дык если ты найдёшь места, где глючит - то проще код поправить... а так, логировать-то можно хоть в файл, хоть куда. какие проблемы с этим? Сообщение отредактировал Iron Bug - 26.8.2010, 17:33 |
|
|
ufna |
![]()
Сообщение
#12
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
1. Прочитай про qDebug() и сходные qWarning() и т.п.
2. Посмотри как перенаправить вывод в файл (кучу раз обсуждалось) |
|
|
laa88rf |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Плохо, что не поняли.
Крупный проект. Встречаются программные ошибки. Нужно если программа сваливается по ошибке - собирать отладочную информацию. Еще пример, MS Office валится по ошибке и предлагает отправить отладочную инфу производителю. Мне надо реализовать такой механизм логгирования ошибки. Надеюсь, что понятно отписал. ![]() |
|
|
Алексей1153 |
![]()
Сообщение
#14
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
laa88rf, вот тут когда-то я с подобным пытался столкнуться , может поможет. Но у меня руки так и не дошли даже попробовать - глюк нашёлся и был отлажен
![]() Сообщение отредактировал Алексей1153 - 27.8.2010, 7:03 |
|
|
laa88rf |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Все хорошо, но приведенный там код будет работать только с приложениями майкрософта. ((
|
|
|
kwisp |
![]()
Сообщение
#16
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Алексей1153 |
![]()
Сообщение
#17
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
laa88rf |
![]()
Сообщение
#18
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#19
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
если честно, забыл где видел. Но помню, что проект с открытыми исходниками, сделано было под виндовоз и лунух. Некий перехватчик в функции main. Который ловил падения программы, что он делал не помню, т.к. код перхватчика был длинный.
стал быть искать имеет смысл. П.С. Если вспомню, то отпишусь |
|
|
kwisp |
![]()
Сообщение
#20
|
![]() астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
по-моему с исключениями что то связано.
|
|
|
laa88rf |
![]()
Сообщение
#21
|
Студент ![]() Группа: Участник Сообщений: 19 Регистрация: 30.7.2010 Из: Orsk Пользователь №: 1918 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Написал парсинг, засунул его вывод в qdebug - ожидал большего, т.к. на вывод идет только то, что я отправляю. А мне надо собирать в первую очередь все, а потом уже пытаться отсеивать
|
|
|
ufna |
![]()
Сообщение
#22
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Имхо, понятия "все" нет. Вывод всегда тот, который кто-то сделал. Само по себе оно выводиться не будет да и не должно - это лишние операции, в некоторых случаях совершенно излишние. Как вывод - будет выводиться только то, что поставил на вывод сам программист.
Но ты можешь ловить все QEvent'ы и выводить их. Но это не есть гуд, т.к. текста будут дикие количества |
|
|
wiz29 |
![]()
Сообщение
#23
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Это механизмы C++ , есть глобалный обработчик исключительных ситуаций, по умолчанию он вызывает стандартную функцию terminate(), переопределяй его, если нужно перехваты друго уровня исключений то ищи соответсвующие места, далее в этом обработчике складывай все в лог, если удастся в зависимости от типа exception http://www.extinguishedscholar.com/wpglob/?p=176 посмотри тут пример
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 7.4.2025, 15:37 |