0
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
namespace parse_main_config {
struct _main_config_ {
std::string m_sCurrentConfigFile;
std::string m_sBaseFile;
std::string m_sBasePrefix;
std::string m_sCheckRuleFile;
std::string m_sReplacementTablesFile;
std::string m_sPasswdFile;
std::string m_sTestsListFile;
std::string m_sModesFile;
std::string m_sIfacesFile;
std::string m_sCmcCheckFile;
std::string m_sUpsCheckFile;
std::string m_sSetLocalIpFile;
std::string m_sShortLogFile;
std::string m_sFullLogFile;
std::string m_sListLogFile;
int m_iNTPTime;
int m_iNTPOffset;
int m_iMonNumber;
int m_iOSRebootTime;
int m_iMonitorCount;
QString m_sStationType;
int m_iHddTimeout;
std::string m_sWinIconFile;
std::string m_sWinMenuOptFile;
std::string m_sWinMenuCloseFile;
std::string m_sWindowTitle;
QString m_sServerIP;
QString m_sServerNetMask;
QString m_sServerNetIP;
int m_iPort;
int m_iTimeout;
// Remote work
std::string m_sRemoteHost;
std::string m_sRemoteUser;
std::string m_sRemotePass;
std::string m_sRemoteFtpUser;
std::string m_sRemoteFtpPass;
// defaults
_main_config_() {
m_sCurrentConfigFile = "";
m_sBaseFile = "./base.cfg";
m_sBasePrefix = "Workstation";
m_sCheckRuleFile = "./check_rules.cfg";
m_sModesFile = "./view_modes.cfg";
m_sIfacesFile = "./ip.cfg";
m_sReplacementTablesFile = "./replacement_tables.xml";
m_sShortLogFile = "./short.log";
m_sFullLogFile = "./full.log";
m_sListLogFile = "./list.log";
m_sPasswdFile = "./passwd";
m_iNTPTime = 0;
m_iNTPOffset = 0;
m_sServerNetMask = "255.255.255.0";
m_sServerNetIP = "1.1.1.1";
m_sServerIP = "127.0.0.1";
m_iPort = 1;
m_iTimeout = 11;
m_iMonNumber = 2;
m_iOSRebootTime = -1;
std::string m_sRemoteHost = "127.0.0.1";
std::string m_sRemoteUser = "blablabla";
std::string m_sRemotePass = "blablabla";
std::string m_sRemoteFtpUser = "blablabla";
std::string m_sRemoteFtpPass = "";
}
};
// parsing file
int read_configuration(const std::string &, _main_config_ &);
}
Поддерживаю старый проект. Большой и настолько старый, что написан с использованием Qt3.
Дело дошло до релиза.
Соль в том, что я добавил в эту структуру поле с именем - m_sCurrentConfigFile (первое)
При сборке debug конфигурации все норм, с release конфигурацией - приложение вылет при QMainWindow::show();
Стоит закомментить это поле и все места, где оно юзается, естественно - как сука, все хорошо.
Юзается в двух местах - и в обоих случаях к нему просто присваивается строка.
На тот самый метод -- ну никак не должно влиять.
Не подскажете, какая сегодня фаза луны?
Запостил: OlegUP,
29 Августа 2017
OlegUP 29.08.2017 16:17 # 0
sizeof int: 4
sizeof std::string: 8
sizeof QString: 8
Это с закоменченным полем.
Может максимальный размер структуры - 256 байт?
Dr_Offset 22.09.2017 13:50 # 0
И еще, ты знаешь, что в 70-74 инициализируются локальные переменные, а не члены класса? )
roman-kashitsyn 29.08.2017 16:26 # 0
А так-то смотреть надо, где именно крэшится через Userdump.exe (или что там у вас в винде).
OlegUP 29.08.2017 16:51 # 0
Работаю под линем.
Асм не знаю.
roman-kashitsyn 29.08.2017 16:56 # 0
OlegUP 29.08.2017 17:13 # 0
из консоли сборки:
g++ -c -m64 -pipe -std=c++11 -Wextra -O2 -D_REENTRANT -Wall -W -DQT_WEBKIT -DCP1251 -DQT_NO_DEBUG -DQT_TESTLIB_LIB -DQT_QT3SUPPORT_LIB -DQT3_SUPPORT -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I../../src/tsw-client -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtTest -I/usr/include/qt4 -Itmp/moc -Itmp/ui -I. -o tmp/obj/testserverwindow.o ../../src/tsw-client/testserverwindow.cpp
а вот линковщик почему-то линкует с опцией О1.
g++ -m64 -Wl,-O1 -o ../../bin/tsw ... tmp/obj/testserverwindow.o ...
Antervis 29.08.2017 19:28 # 0