crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Отключение исключения, Qt 4.3.2 and Visual Studio 2005
AD
  опции профиля:
сообщение 7.10.2008, 9:32
Сообщение #1


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

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

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




Репутация:   17  


У меня очередной вопрос! :)

[attachment=267:err_message.JPG]

Как и где правильно отключить следующее падение программы: падает только в дебаг-режиме. При этом если нажать "Ignore", то он продолжит нормально работать. В релизе такой ошибки совсем нет. Как отключить это исключение и где?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 7.10.2008, 9:46
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Ну так ты посмотри почему выстреливает Assert в том файле в 56 строке!
Думаю, что не просто так... ;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 7.10.2008, 12:24
Сообщение #3


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

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

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




Репутация:   17  


Не знаю я, что они в дебаг-версию вшили, но ломается дебаг-версия вот из-за этой строки (если нажать - Игнорировать - все прекрасно работает):
innerLayout = new QGridLayout(centralWidget);


// Инициализация и установка нужных размеров окна
void Ui_VerticalGraphicClass::setupUi(QDockWidget *ReliefClass)
{
    if (ReliefClass -> objectName().isEmpty())
        ReliefClass -> setObjectName(QString::fromUtf8("ReliefClass"));
    ReliefClass -> resize(924, 163);

    QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(ReliefClass -> sizePolicy().hasHeightForWidth());
    ReliefClass -> setSizePolicy(sizePolicy);

    gridLayout = new QGridLayout(ReliefClass);
    gridLayout -> setSpacing(6);
    gridLayout -> setMargin(11);
    gridLayout -> setObjectName(QString::fromUtf8("gridLayout"));

    innerWindow = new QMainWindow(ReliefClass, Qt::Widget);
    innerWindow -> setObjectName(QString::fromUtf8("innerWindow"));
    innerWindow -> setWindowFlags(Qt::SubWindow);
    sizePolicy.setHeightForWidth(innerWindow -> sizePolicy().hasHeightForWidth());
    innerWindow -> setSizePolicy(sizePolicy);
    innerWindow -> setSizeIncrement(QSize(1, 1));
    gridLayout -> addWidget(innerWindow, 0, 0, 1, 1);
    ReliefClass -> setWidget(innerWindow);

    centralWidget = new QWidget(innerWindow);
    centralWidget -> setObjectName(QString::fromUtf8("centralWidget"));
    sizePolicy.setHeightForWidth(centralWidget -> sizePolicy().hasHeightForWidth());

    innerLayout = new QGridLayout(centralWidget);
    innerLayout -> setSpacing(6);
    innerLayout -> setMargin(11);
    innerLayout -> setObjectName(QString::fromUtf8("verticalLayout"));

    displayRelief = new QWidget(centralWidget);
    displayRelief -> setObjectName(QString::fromUtf8("displayRelief"));
    sizePolicy.setHeightForWidth(displayRelief -> sizePolicy().hasHeightForWidth());
    innerLayout -> addWidget(displayRelief, 0, 0, 1, 1);

    scroll = new QScrollBar(centralWidget);
    scroll -> setObjectName(QString::fromUtf8("scroll"));
    scroll -> setOrientation(Qt::Horizontal);
    sizePolicy.setHeightForWidth(scroll -> sizePolicy().hasHeightForWidth());
    innerLayout -> addWidget(scroll, 1, 0, 1, 1);

    toolBar = new QToolBar(centralWidget);
    toolBar -> setObjectName(QString::fromUtf8("toolBar"));
    toolBar -> setToolButtonStyle(Qt::ToolButtonIconOnly);
    toolBar -> setOrientation(Qt::Vertical);
    toolBar -> setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
    toolBar -> setVisible(true);

    innerWindow -> addToolBar(Qt::LeftToolBarArea, toolBar);
    innerWindow -> setCentralWidget(centralWidget);

    retranslateUi(ReliefClass);
    QMetaObject::connectSlotsByName(ReliefClass);
}


Уже мозги сломал, пытаясь понять эту хню. Почему ломается? Несмертельно, в дебаг-версии это заколебало.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 7.10.2008, 12:46
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

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




Репутация:   6  


Цитата(AD @ 7.10.2008, 10:32) *
У меня очередной вопрос! :)

[attachment=267:err_message.JPG]

Как и где правильно отключить следующее падение программы: падает только в дебаг-режиме. При этом если нажать "Ignore", то он продолжит нормально работать. В релизе такой ошибки совсем нет. Как отключить это исключение и где?


http://www.google.com/search?hl=ru&cli...1%D0%BA&lr=

Думаю это оно просто в другом месте:
http://trolltech.com/developer/task-tracke...y&id=179713

History
2007-09-19 19:21 - Entry created: Task status changed to 'Open', Resolution set to 'Pending', Version found set to '4.3.1', Version for fix set to 'Not scheduled', Priority changed to 'No Priority'
2007-09-21 11:24 - Version for fix set to '4.3.3'
2007-09-21 11:24 - Priority changed to '1 - Highest'
2007-09-21 11:32 - Task status changed to 'Active'
2007-09-24 11:42 - Resolution set to 'Fixed'
2007-09-24 11:42 - Task status changed to 'Closed'
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 7.10.2008, 13:12
Сообщение #5


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

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

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




Репутация:   17  


Насколько я понял, мне придется с этим сообщением смириться? Так что-ли?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 8.10.2008, 13:14
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

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




Репутация:   6  


Цитата(AD @ 7.10.2008, 14:12) *
Насколько я понял, мне придется с этим сообщением смириться? Так что-ли?

Судя по всему это баг и он исправлен в следующей версии Qt. Или смириться или проапдейтиться.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 2.4.2009, 14:54
Сообщение #7


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

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

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




Репутация:   17  


Хотите верьте, хотите нет, но при добавлении еще одного виджета эта ошибка самоликвидировалась! Каким образом? Видимо, это известно только Богу и троллям!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 2.4.2009, 22:15
Сообщение #8


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

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

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




Репутация:   17  


кто-нибудь прокомментирует данную ситуацию? Ошибка возникала только при открытии прикрепляемого виджета в дебаг-режиме. Сейчас данной ошибки нет.
Судя по предыдущим постам в этой теме, моя идея, что у троллей в библиотеке 4.3.2 двойная ошибка, что и привело к ее исправлению! У кого-то есть еще идеи?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
LE0N
  опции профиля:
сообщение 2.4.2009, 22:19
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 10.3.2009
Из: Беларусь
Пользователь №: 604

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




Репутация:   0  


Внутрь того, где возникла ошибка посмотреть слабо ? Наверняка ведь assert ы выставленны. Или нам нужно, как и тебе, на кофейной гуще гадать? )
ЗЫ. Вот не понятно, почему все сидят на древних версиях :)
Я так понял - потому, что они коммерческие. НО...Троли когда продают, не обеспечивают поддержкой обнавлениями????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 2.4.2009, 22:29
Сообщение #10


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

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

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




Репутация:   17  


Цитата(LE0N @ 2.4.2009, 23:19) *
Внутрь того, где возникла ошибка посмотреть слабо ? Наверняка ведь assert ы выставленны. Или нам нужно, как и тебе, на кофейной гуще гадать? )
ЗЫ. Вот не понятно, почему все сидят на древних версиях :)
Я так понял - потому, что они коммерческие. НО...Троли когда продают, не обеспечивают поддержкой обнавлениями????

За обновление надо платить! Не так дорого, но и недешево! ;) В стране кризис, в фирме - тоже!

Вы сможете помочь исправить код библиотеки? :)
qglobal.cpp
#if defined(Q_CC_MSVC) && defined(QT_DEBUG) && defined(_DEBUG) && defined(_CRT_ERROR)
        // get the current report mode
        int reportMode = _CrtSetReportMode(_CRT_ERROR, _CRTDBG_MODE_WNDW);
        _CrtSetReportMode(_CRT_ERROR, reportMode);
        int ret = _CrtDbgReport(_CRT_ERROR, __FILE__, __LINE__, QT_VERSION_STR, buf);
        if (ret == 0  && reportMode & _CRTDBG_MODE_WNDW)
            return; // ignore
        else if (ret == 1)
            _CrtDbgBreak();
#endif




void qFatal(const char *msg, ...)
{
    char buf[QT_BUFFER_LENGTH];
    buf[QT_BUFFER_LENGTH - 1] = '\0';
    va_list ap;
    va_start(ap, msg); // use variable arg list
    if (msg)
        qvsnprintf(buf, QT_BUFFER_LENGTH - 1, msg, ap);
    va_end(ap);

    qt_message_output(QtFatalMsg, buf);
}

void qt_assert(const char *assertion, const char *file, int line)
{
    qFatal("ASSERT: \"%s\" in file %s, line %d", assertion, file, line);
}


qlayoutengine_p.h
int effectiveSpacer(int uniformSpacer) const {
        Q_ASSERT(uniformSpacer >= 0 || spacing >= 0);
        return (uniformSpacer >= 0) ? uniformSpacer : spacing;
    }

Ну если Вы готовы помочь, то вот код. Что дальше? Разбирать баги библиотеки, согласитесь, что этим заниматься - не самое благодарное занятие?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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