BoriSS23
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору У меня на телефоне уже .so (Shared Object) файлы я их могу павить в Ida Pro и есть исходники C++ в которых я могу смотреть чистый код. Кода много, но конкретно этот кусок который пишет в лог сообщения небольшой, однако не могу распазнать в нём как именно реализована прокрутка (log rotation) лога, файл максимум около 3 мегабайт когда этот размер набран потом внутри сообщения начинают прокручиваться с потерей старой информации, задача сделать чтобы все сообщения оставались на месте, а увеличивался размер файла. Я скину те куски кода которые относятся к данному файлу вы подскажите мне где и что искать я уже сутки потратил на поиски, сам я не с++ програмист поэтому возможно не замечаю. Поискал через IDE все места где встречается переменная debugLogFilename и pDebugLogFile это всё где они используются, почему же тогда лог прокручивается? Вспомогательные функции Код: static CAMX_INLINE INT VSNPrintF( CHAR* pDst, SIZE_T sizeDst, const CHAR* pFormat, va_list argptr) { INT numCharWritten = 0; #if defined(_LINUX) numCharWritten = vsnprintf(pDst, sizeDst, pFormat, argptr); #elif defined(_WIN32) numCharWritten = vsnprintf_s(pDst, sizeDst, _TRUNCATE, pFormat, argptr); #elif defined(ANDROID) numCharWritten = vsnprintf(pDst, sizeDst, pFormat, argptr); #else CAMX_STATIC_ASSERT_MESSAGE(FALSE, "Unsupported Target"); #endif // defined(_LINUX) return numCharWritten; } static CAMX_INLINE INT SNPrintF( CHAR* pDst, SIZE_T sizeDst, const CHAR* pFormat, ...) { INT numCharWritten; va_list args; va_start(args, pFormat); numCharWritten = VSNPrintF(pDst, sizeDst, pFormat, args); va_end(args); return numCharWritten; } FILE* OsUtils::FOpen( const CHAR* pFilename, const CHAR* pMode) { return fopen(pFilename, pMode); } VOID OsUtils::GetDateTime( CamxDateTime* pDateTime) { CAMX_ASSERT(NULL != pDateTime); struct timeval timeValue; struct tm* pTimeInfo = NULL; INT result = 0; result = gettimeofday(&timeValue, NULL); if (0 == result) { pTimeInfo = localtime(&timeValue.tv_sec); if (NULL != pTimeInfo) { pDateTime->seconds = static_cast<UINT32>(pTimeInfo->tm_sec); pDateTime->microseconds = static_cast<UINT32>(timeValue.tv_usec); pDateTime->minutes = static_cast<UINT32>(pTimeInfo->tm_min); pDateTime->hours = static_cast<UINT32>(pTimeInfo->tm_hour); pDateTime->dayOfMonth = static_cast<UINT32>(pTimeInfo->tm_mday); pDateTime->month = static_cast<UINT32>(pTimeInfo->tm_mon); pDateTime->year = static_cast<UINT32>(pTimeInfo->tm_year); pDateTime->weekday = static_cast<UINT32>(pTimeInfo->tm_wday); pDateTime->yearday = static_cast<UINT32>(pTimeInfo->tm_yday); pDateTime->dayLightSavingTimeFlag = static_cast<UINT32>(pTimeInfo->tm_isdst); } } } INT OsUtils::FPrintF( FILE* pFile, const CHAR* pFormat, ...) { INT result; va_list argptr; va_start(argptr, pFormat); result = vfprintf(pFile, pFormat, argptr); va_end(argptr); return result; } CamxResult OsUtils::FClose( FILE* pFile) { CamxResult result = CamxResultSuccess; if (0 != fclose(pFile)) { result = CamxResultEFailed; } return result; } | Код: m_pStaticSettings->debugLogFilename=Log_file if ('\0' != m_pStaticSettings->debugLogFilename[0]) { FILE* pDebugLogFile = NULL; CHAR filename[FILENAME_MAX] = {0}; OsUtils::SNPrintF(filename, sizeof(filename), "%s%s%s.bin", ConfigFileDirectory, PathSeparator, m_pStaticSettings->debugLogFilename); pDebugLogFile = OsUtils::FOpen(filename, "w"); newLogInfo.pDebugLogFile = pDebugLogFile; } else { newLogInfo.pDebugLogFile = NULL; } | Код: m_debugLogInfo.pDebugLogFile = pNewLogInfo->pDebugLogFile; if (NULL != g_logInfo.pDebugLogFile) { OsUtils::FClose(g_logInfo.pDebugLogFile); g_logInfo.pDebugLogFile = NULL; } if (NULL != g_logInfo.pDebugLogFile) { CamxDateTime systemDateTime; OsUtils::GetDateTime(&systemDateTime); OsUtils::FPrintF(g_logInfo.pDebugLogFile, "%02d-%02d %02d:%02d:%02d:%03d %s\n", systemDateTime.month, systemDateTime.dayOfMonth, systemDateTime.hours, systemDateTime.minutes, systemDateTime.seconds, systemDateTime.microseconds / 1000, logText); } | Код: if (NULL != CamX::g_logInfo.pDebugLogFile) { CamX::OsUtils::FPrintF(CamX::g_logInfo.pDebugLogFile, "%s\n", assertText); } |
| Всего записей: 186 | Зарегистр. 18-12-2014 | Отправлено: 11:30 28-07-2024 | Исправлено: BoriSS23, 13:34 28-07-2024 |
|