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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Многопоточное программирование, процессы / Re: Ошибка "Segmentation fault" : Апрель 09, 2024, 16:52
Хорошо бы где-нибудь почитать про методы отладки в Qt - наработанные приемы, инструменты. Может, есть монография по этой теме?
О монографии не слышал. Кстати надо печатать и в конструкторе, возможна ABA. Вообще первое что нужно сделать - добиться стабильности краша, идеи/мысли для этого у Вас есть. Если стабильно летит - дальше уже "дело техники" и все такое. Самое мерзкое если появится так раз в месяц - и с приветом, вымотает все кишки  Плачущий
2  Qt / Многопоточное программирование, процессы / Re: Ошибка "Segmentation fault" : Апрель 06, 2024, 13:37
Как же я смогу это сделать, если ~QModbusRtuClient уже исполнился, а краш происходит через несколько секунд?
напр так
Код:
QModbusRtuClient::~QModbusRtuClient( void )
{
 printf("~QModbusRtuClient %p\n", this);
}
И при краше сравнить receiver c напечатанным.
Но поздно - я уже все переделываю, не хочется возвращаться к проблеме, которая имеет чисто академический интерес))
Хорошо если так  Улыбающийся
3  Qt / Многопоточное программирование, процессы / Re: Ошибка "Segmentation fault" : Апрель 05, 2024, 10:55
Маловато "фактов". Хорошо бы получить останов (или хотя бы краш) в своем коде/фильтре. Посмотреть что за QEvent, здесь вариантов немного. Убедиться что это действительно удаление, печатая в ~QModbusRtuClient адрес экземпляра
4  Qt / Многопоточное программирование, процессы / Re: Ошибка "Segmentation fault" : Апрель 04, 2024, 12:57
Для человека "вне (вашего) проекта" информативно это
...после чего сокетом формируется сигнал ошибки и отправляется уже удаленному modbusDevice. И программа валится.
И что, Qt позволяет вот так "отправить сигнал удаленному"? Не должно

Тему закрываю.
Зачем? Кому-то мешает?  Улыбающийся

Одна нормальная тема в год - и ту закрывает  Плачущий
5  Qt / Многопоточное программирование, процессы / Re: Ошибка "Segmentation fault" : Апрель 04, 2024, 07:18
Вы, видимо имели в виду QObject::eventFilter? Я плохо разбираю феню кулхацкеров  Подмигивающий, не очень понял, как это реализовать.
Напр так
Код:
bool MyApp::notify(QObject *object, QEvent *event)
{
  ...
  return QGUIApplication::notify(object, event);
}
И пытаться как-то определить что поле QObjectPrivate * испорчено (ну хотя бы нечетный адрес). Придется подключить приватные хедеры.

С удалением может быть и никак не связано, просто кто-то пишет не туда куда надо, и объект попадает под раздачу. Поэтому первым делом надо проверять кучу (средствами вашей IDE)
6  Qt / Многопоточное программирование, процессы / Re: Ошибка "Segmentation fault" : Апрель 03, 2024, 08:00
Да, receiver выглядит калечным. Если он убит "хвостом", то куча испорчена. И может за это зацепиться
Цитировать
  // Qt enforces the rule that events can only be sent to objects in
   // the current thread, so receiver->d_func()->threadData is
    // equivalent to QThreadData::current(), just without the function
    // call overhead.
Навесить хвильтр где сравнить receiver->d_func()->threadData и QThreadData::current(), получить там останов
7  Qt / Вопросы новичков / Re: как правильно работать с Qt, чтобы не было утечек памяти? : Декабрь 09, 2023, 13:30
Разработчики Qt в своей архитектуре смешали вопрос иерархии экземпляров объектов и вопрос владения, заложив правило, что верхний в иерархии объект удаляет объекты ниже в иерархии. Это привело к тому, что в Qt традиционно используют сырые указатели.
Не вижу ничего плохого а этом правиле. Ну хорошо, а как же должна выглядеть связка парент-чайлд в свете новых достижений семантики?  Парент владеет чайлдами? Да, стало быть все равно парент должен иметь контейнер чайлдов. Или (теперь уже) вумных указателей. Да, но "юники" копировать нельзя, а контейнер потребует. Слышал как-то это обходится "муванием". И как тогда удалять тот же виджет (чайлд)?

Да уж наворотили в Qt всего Подмигивающий.
Ах как мы добродушны и снисходительны  Улыбающийся
8  Qt / 2D и 3D графика / Re: 3D график по точкам : Ноябрь 01, 2023, 19:27
Необходимо виазулизировать траекторию. Покрутить мышкой в 3Д, приблизить, удалить, посмотреть сверху/снизу. Чем это можно сделать?
OpenGL. Графики или нет - все равно это "3D сцена", со всеми вытекающими. Вьюер - довольно большая работа (впрочем зависит от добросовестности исполняющего)
9  Qt / OpenGL / Re: Получение локальных координат объекта : Ноябрь 01, 2023, 19:22
Код:
        QVector3D screenPos(p.x(),p.y(),1.0f); // p.x, p.y экранные координаты клика
        QVector3D vecUnproj = screenPos.unproject(m_view, m_projection,QRect(0,0, 640, 480));
Y перевернута (см описание unproject). Z = 1 соответствует задней стенке фрустума, Z = 0 передней. У Вас Z = 3, нормируйте на nearRes, farRes, они те самые что даете в метод perspective, пере-вычислять не нужно.

В обоих случаях Вы получили верный луч/вектор, но у Вас перспективное изображение, т.е. чем дальше объект от камеры (чем больше Z) - тем он меньше и больше прижимается к центру экрана. Зачем Вам перспектива в 2D сцене - не знаю. Для расстояния 3

0.314589/x = -0.949228/-3, ну x и будет примерно 1

(я ненастоящий сварщик)
Так можно ж "просто пройти дальше по ссылке"  Улыбающийся
Страниц: [1]

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