crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Выяснение причины падения приложения, при переключении вкладок
AD
  опции профиля:
сообщение 17.6.2009, 11:10
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Приложение имеет такой вид:

Вкладка имитации работы с пульта управления
[attachment=670:picture1.JPG]

Вкладка имитации работы с внешних устройств
[attachment=671:picture2.JPG]

Первая вкладка отличается от остальных 3-x передаваемым и принимаемым пакетом данных! Если сделать следующее действие: открыть порт (текущая вкладка - 1), переключиться на другую вкладку - то в 70% случаев приложение падает. Не могу найти причину падения. Как правило в отладчике выпадает в следующую функцию (мне неясно что там может упасть):

/// Проверка пакета, принятого от прожектора
void ManualControl::checkPacket()
{
    int value1 = VALFROMBYTES(inf_from_ed_packet.high_azim, inf_from_ed_packet.low_azim) / 10;
    sliderFactAzimuth -> setValue(value1);
    int value2 = VALFROMBYTES(inf_from_ed_packet.high_angle_elev, inf_from_ed_packet.low_angle_elev) / 10;
    sliderFactAngleElevation -> setValue(value2);

    QString pStrAzimuth(lblFactAzimuth -> text()), pStrAngleElev(lblFactAngleElevation -> text());
    pStrAzimuth = pStrAzimuth.simplified().section(QRegExp("[-0-9]"), 0, 0).simplified();
    pStrAzimuth += "                     ";
    pStrAzimuth += QString::number(value1);
    lblFactAzimuth -> setText(pStrAzimuth);
    pStrAngleElev = pStrAngleElev.simplified().section(QRegExp("[-0-9]"), 0, 0).simplified();
    pStrAngleElev += "     ";
    pStrAngleElev += QString::number(value2);
    lblFactAngleElevation -> setText(pStrAngleElev);

    readStateSpotlight();
}

По какой-то неизвестной мне причине падает либо на первой строчке c pStrAzimuth, либо на предпоследней.

А последний раз упало на функции readSpotlight
/// Чтение и разбор состояния прожектора
void ManualControl::readStateSpotlight()
{
    chkPwrIRNozzle -> setChecked(TESTBIT(inf_from_ed_packet.spotlight_state, 0));
    chkPwrLamp -> setChecked(TESTBIT(inf_from_ed_packet.spotlight_state, 1));
    chkSuccSpotlight -> setChecked(!TESTBIT(inf_from_ed_packet.spotlight_state, 2));
    chkSuccCoolSys -> setChecked(!TESTBIT(inf_from_ed_packet.spotlight_state, 3));
    chkStwPos -> setChecked(TESTBIT(inf_from_ed_packet.spotlight_state, 4));
    chkOrigPos -> setChecked(TESTBIT(inf_from_ed_packet.spotlight_state, 5));
    lblCtrlMode -> setText(TESTBIT(inf_from_ed_packet.spotlight_state, 6) ? "Man" : "Auto");
}


Сообщение отредактировал AD - 17.6.2009, 11:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
SABROG
  опции профиля:
сообщение 17.6.2009, 12:45
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Похоже на падение при отрисовке окна вызванной сменой state в checkbox'ах. Проверь с другими стилями. Библиотека Qt собиралась на той машине, где ты её тестируешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 14:21