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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 5 6 [7] 8 9 ... 142
91  Программирование / С/C++ / Re: Перегрузка функций : Август 13, 2018, 09:23
Можно определить конструктор List<T>::const_iterator от List<T>::iterator и должно заработать. Сейчас компиль не понимает, как ему преобразовать const_iterator в iterator.
Ещё можно при текущей реализации попробовать отдельно создать объект const_iterator, затем ему присвоить iterator.
Код
C++ (Qt)
List<int> list;
List<int>::const_iterator it;
it = list.begin();
 
92  Программирование / С/C++ / Re: Отлов ошибки : Август 05, 2018, 14:56
Исключения в at бросаться не должны - все запрашиваемые элементы существуют
93  Программирование / С/C++ / Re: Отлов ошибки : Август 05, 2018, 14:54
vertices.at(...) потокобезопасны?

Не знаю. Потокобезопасен ли неконстантный std::map::at?
94  Программирование / С/C++ / Re: Отлов ошибки : Август 03, 2018, 15:45
Вроде, удалось подавить вывод data race санитайзера таким путём:
Указал уровень оптимизаций 0. Таким образом получил более конкретное место. Там производилось 3 обращения подряд к std::map::at заменил их на константные варианты.
Не понимаю, как константность методов влияет.
Псевдокод проблемного места
Код
C++ (Qt)
PARALLEL_FOR
for (i in range) {
   const Triangle triangle(vertices_, i);
   .....
}
 
Triangle::Triangle(vertex_map *vertices, int i)
   : a(vertices.at(i)), b(vertices.at(i+1)), c(vertices.at(i+2))
{}
 
95  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 22:53
Да, в логгере имеется мьютекс, видать, он влиял на результат
Я забыл упомянуть, у меня ещё парсинг (открытие файла) происходит в std::async, но к моменту расчёта парсинг окончен.
ThreadSanitizer показал много мест... Ругнулся также на ui->setup(this). Также ругнулся и на интересующее место.
У меня проблема интерпретации вывода, прошу помочь

Код
C++ (Qt)
   FaceSet result; // using FaceSet = QSet<Face>;
 
   const VolumeNumberList &volumeNumbers = mesh()->volumeNumbers(); // byval QVector
 
   PARALLEL_FOR
   for (int i = 0; i < volumeNumbers.count(); ++i){
       //taking volume byref
       const MeshVolume &volume = mesh()->volume(volumeNumbers.at(i)); // Read of size 2 at 0x7b080008b95c by thread T13:
 
       const auto &volumeRange = volume.range(); // can modify mutable range_
       if (!isVolumeHasToBeChecked(volume, filter) ||
               !hasIntersection(line, volumeRange)){
           continue;
       }
       const auto &shell = volume.shell(); //by value
       const auto &shellFaces = shell.shellFaces(); //by value QVector
       const FaceSet &volumeResult = intersectedFacesWithLine(line, shellFaces); // byval QSet
 
       SCALAR{
           result += volumeResult;
       }
   }
 
   return result;
 
Код
C++ (Qt)
#ifdef _OPENMP
#define PARALLEL_FOR _Pragma("omp parallel for")
#define SCALAR _Pragma("omp critical")
#else
#define PARALLEL_FOR
#define SCALAR
#endif
 
96  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 18:25
ThreadSanitizer не пробовали?
Нет. Не знал о таком. Спасибо, попробую.
97  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 16:25
Все подобные переменные имеют время жизни в пределах итерации for и формируются из неизменяемых в процессе работы цикла объектов.
98  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 16:00
Потоки используются?

Легально ли в потоках пользоваться методами временных объектов вроде такого:

Код
C++ (Qt)
const auto &val = var->getString().trimed(); // return by value
99  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 15:56
как вариант - прогнать код через статический анализатор кода(pvs или clang).
cppcheck использовал
Поругался только на отсутствие explicit
100  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 15:55
Потоки используются?
openmp
101  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 13:30
Ещё есть момент - на той машине 2 монитора. Но, вроде, это никак не влияет

Код
C++ (Qt)
Converting user click: QPoint(389,671) to line
102  Программирование / С/C++ / Re: Отлов ошибки : Август 01, 2018, 13:23
Что у тебя задействовано в расчете?
У меня как-то был косяк на одной машине из-за того, что использовалась Cuda, а дрова на видюху стояли какие-то кривые...

В расчёте задействованы матрицы, точки из Qt также мои классы геометрии (плоскость, линия, треугольник). Клик берётся из QOpenGLWidget, но вроде корректные значения выставляются.

Нужно искать не инициализированные переменные. Улыбающийся
Это первое, о чём подумал. Глазками пробежался - вроде нет. Стараюсь не допускать таких Мне кажется, валгринд бы ругнулся на неинициализированную переменную. А может существует ключик gcc/clang инициализировать неинициализированные переменные фиксированным значением?

.. некорректный расчёт.
Т.е. вылета нет, некорректный рез-т? Ну тогда для начала лог: входные данные + рез-т.
Текущего лога недостаточно. При подробном логгировании не воспроизводится
103  Программирование / С/C++ / Отлов ошибки : Август 01, 2018, 09:46
Привет друзья!
Столкнулся с проблемой, что на одной машине программа выполняет некорректный расчёт. Подключиться к ней нет возможности...
Пробовал воспроизвести проблему под санитайзерами и valgrind - ругань только на сторонние либы и не в момент интересующего меня расчёта.
Входные данные примерно одинаковые (могут отличаться настройки отображения элементов отрисовки и положение клика пользователя)
Как только добавляю больше логов, чтобы локализовать проблему на проблемной машине, как она сразу пропадает.
Быть может кто-нибудь подкинет идей что можно ещё попробовать сделать для решения проблемы...
104  Qt / Вопросы новичков / Re: Обработка клика по динамически созданной кнопке : Июль 30, 2018, 08:40
Можно count сделать членом класса и не потребуется тогда передавать его
105  Qt / Общие вопросы / Re: Как в subdirs-проекте выставить основной проект, который будет запускаться? : Июль 29, 2018, 12:32
На вкладке параметров сборки и запуска (Properties Ctrl+5) вроде был выбор кого запускать.
Также можно по Ctrl+T, выбрать
Страниц: 1 ... 5 6 [7] 8 9 ... 142

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