Отладка против запуска в Qt Creator. Различные числовые значения - PullRequest
0 голосов
/ 07 августа 2020

Я работаю над проектом C ++ Qt в QtCreator. Есть некоторые манипуляции с данными (например, тип std :: double). Когда я начинаю отладку без какой-либо точки останова, мое приложение показывает правильные данные (-8.7357). Но когда я запускаю уже скомпилированную программу, у меня получается (-8). В чем может быть причина этой ситуации?

Ниже приведен фрагмент моего json файла:

{
...
"sources": [
    [-8.30000, -1.43300, 0],
    [-8.73575, -1.76287, -0.24404],
    [-8.68767, -1.72513, 0.35267],
    [-8.24991, -1.39526, 0.59671],
    [-7.86225, -1.10313, 0.24404],
    [-7.91233, -1.14087, -0.35267],
    [-8.35009, -1.47074, -0.59671]
]
...
}

Анализ этого файла:

Json::Value root;
std::ifstream jsonFile(pathToJsonFile);
jsonFile >> root;
...
Json::Value srsc = root["sources"];
for (Json::Value::ArrayIndex i = 0; i != srsc.size(); i++)
{
   Json::Value src = Json::arrayValue;
   src = srsc[i];

   Antenna::centerPoint cp;
   cp.x = src.get(Json::ArrayIndex(0), Json::Value()).asDouble();
   cp.y = src.get(Json::ArrayIndex(1), Json::Value()).asDouble();
   cp.z = src.get(Json::ArrayIndex(2), Json::Value()).asDouble();
   an.sources[i] = cp;
}

Установка данных в затем модель покажет это на экране:

for(unsigned int row = 0; row < an.sources.size(); row++)
{
    model->setData(model->index(row, 0), an.sources[row].x);
    model->setData(model->index(row, 1), an.sources[row].y);
    model->setData(model->index(row, 2), an.sources[row].z);
}
...
ui->sourcesTableView->setModel(model);

Я использую:

Я использую Linux astra 4.15.3-2-generi c OS Компилятор G CC - g cc (Debian 6.3.0-18 + deb9u1) 6.3.0 20170516. cmake версия 3.7.2 Отладчик gdb - GNU gdb (Debian 7.12-6) 7.12.0.20161007- git

1 Ответ

0 голосов
/ 13 августа 2020

Вот дублирую ответ из комментариев. Мой json -файл использует '. 'десятичный разделитель. Qt использует информацию из QSystemLocale, т.е. информацию о локали из Операционной системы. Вероятно, отладчик GDB использует свою настройку. Вот почему при отладке у меня есть правильные данные. Я изменил строку в файле / usr / share / i18n / locales / ru_RU

decimal_point "<U002C>"

на

decimal_point "<U002E>"

Затем я перенастроил локали:

dpkg-reconfigure locales

и, наконец, перезапустите Qt Creator, и он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...