Russian Qt Forum
Ноябрь 24, 2024, 07:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка(код ошибки 255)  (Прочитано 15523 раз)
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« : Декабрь 25, 2013, 10:21 »

Пытаюсь поймать ошибку, запускаю программу через отладчик все норм.
Как только запускаю без отладчика, то вылетает с кодом ошибки 255
Записан
Bepec
Гость
« Ответ #1 : Декабрь 25, 2013, 10:33 »

Попробуйте запустить её ещё раз. Наверно код ошибки будет 255 Веселый

PS код, господа, код. Кодом всё можно решить.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #2 : Декабрь 25, 2013, 10:42 »

Но это тяжелее, т.к. у меня программа работает непосредственно с устройством.
В дебаге не вылетает, поэтому я не могу никак найти на каком из этапов происходит fail.
Записан
Serr500
Гость
« Ответ #3 : Декабрь 25, 2013, 10:57 »

Варианты.
1) Многопоточность. Что-то при работе под отладчиком успевает инициализироваться, а без отладчика - нет.
2) При работе с устройством под отладчиком работа медленнее и устройство успевает ответить на запрос программы.
3) Отладчик ухитряется чистить какие-то регионы памяти, а при работе без отладчика в них мусор.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #4 : Декабрь 25, 2013, 10:58 »

Еще тогда такой вопрос.
Вот работаю с Model-View-(View Model).

Добавляю элементы в дерево.
Отображаю их в общей структуре ,и при выделении элемента в дереве, отображаются его дочки в листе.

Иногда происходит так, что при добавлении элемента в общую структуру он не отображается.
А вот в листе виден.

Добавляем в общую структуру:
Код
C++ (Qt)
 
//---------Global------------------
QModelIndex currentModelIndex;
CommonElement *currentElement;
//--------------------------------
 
void MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
  ...
  currentElement = NULL;
 
 
   root = new QObject(this);
   base = new Base(root);
 
   Delegate *mydelegate = new Delegate(this);
 
   treeview = new TreeView(this);
   treemodel = new TreeModelBrowser(root);
   treeview->setModel(treemodel);
   treeview->setEditTriggers(QAbstractItemView::DoubleClicked);
   treeview->setItemDelegate(mydelegate);
 
   listview = new ListView(this);
   listmodel = new ListModelBrowser();
   listmodel->initRoot(base);
   listview->setModel(listmodel);
 
   connect(treeview,SIGNAL(appendChildTree(QModelIndex)),treemodel,SLOT(updateModelInsertRow(QModelIndex)));
   connect(treeview,SIGNAL(appendChildList(QModelIndex)),listmodel,SLOT(setRoot(QModelIndex)));
   ...
}
 
void MainWindow::appendElement()
{
   qDebug()<<"appendElement";
   if(currentElement != NULL)
   {
       Q_EMIT appendChild(currentModelIndex);        
       listmodel->setRoot(currentModelIndex);
   }
}
 
void TreeModelBrowser::updateModelInsertRow(QModelIndex index)
{
   if(index.isValid())
   {
       int row = index.row();
       row++;
       beginInsertRows(index,row,row);
       CommonElement *ce = reinterpret_cast<CommonElement*>(index.internalPointer());
       ce->appendChild();    
       endInsertRows();
   }
}
 
void ListModelBrowser::setRoot(QModelIndex index)
{
   if(index.isValid())
   {
       QObject *obj = reinterpret_cast<QObject*>(index.internalPointer());
       beginResetModel();
       root = obj;
       endResetModel();
   }
}
 
« Последнее редактирование: Декабрь 25, 2013, 11:02 от demaker » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 962


Просмотр профиля
« Ответ #5 : Декабрь 25, 2013, 10:59 »

Варианты.
1) Многопоточность. Что-то при работе под отладчиком успевает инициализироваться, а без отладчика - нет.
2) При работе с устройством под отладчиком работа медленнее и устройство успевает ответить на запрос программы.
3) Отладчик ухитряется чистить какие-то регионы памяти, а при работе без отладчика в них мусор.

Спасибо, интересно
Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #6 : Декабрь 25, 2013, 15:20 »

Насколько я знаю:
При сборке в дебаг режиме неинициализированные переменные инициализируются нулем;
Безопасная работа с массивами и участками выделенной памяти (контроль выхода за границы)

Так что ищите неинициализированные переменные и запись данных в ячейки за пределами аллоцированого участка памяти.
Записан
Serr500
Гость
« Ответ #7 : Декабрь 25, 2013, 16:11 »

Здесь, насколько я понял, речь не о сборке (debug/release), а о запуске одной и той же сборки под управлением отладчика и без него.

При сборке в дебаг режиме неинициализированные переменные инициализируются нулем
Да ну? Создайте локальную неинициализированную переменную простого типа (указатель, например) внутри функции, поставьте на начало функции брейкпойнт, запустите под отладчиком и посмотрите на значение переменной.
Записан
Bepec
Гость
« Ответ #8 : Декабрь 25, 2013, 17:54 »

Swa прав в отдельных случаях. В VS есть надстройка, позволяющая это в дебаге.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.089 секунд. Запросов: 23.