#c #qt #debugging #memory-leaks #virtual
#c #qt #отладка #утечки памяти #виртуальный
Вопрос:
Использование qt 4.8 в приложении Windows происходит случайный сбой и редко раз в день, он не ломается в подключенном отладчике и также не показывает никакого кода.. я проверил журнал отладчика, в котором говорится
~»utils.c: 1401: внутренняя ошибка: виртуальная память исчерпана: не удается выделить 32768 байт.Если обнаружена внутренняя проблема GDB, дальнейшая отладка может оказаться ненадежной.nCreate основной файл GDB? » ~»(y или n) [ответ Y; ввод не с терминала]n» ~»utils.c:1401: внутренняя ошибка: виртуальная память исчерпана: не удается выделить 32768 байт.Если обнаружена внутренняя проблема GDB, дальнейшая отладка может оказаться ненадежной.nCreate основной файл GDB? » ~» (y или n) [ответ Y; ввод не с терминала] n» 25 ^ ошибка, сообщение = «неизвестная ошибка»
Комментарии:
1. Это указывает на утечку памяти. Проверьте использование памяти приложением с течением времени, и если наблюдается постоянное увеличение, выполните отладку, чтобы обнаружить переполнение памяти.
2. Возможно, приложение запущено с использованием старого win32 API в Vista и более новой системе? Как сообщается в Dcraw faq: Якобы для предотвращения утечек памяти Microsoft решила, что программы, использующие старый MS-DOS API, включая все, что скомпилировано с DJGPP, должны быть ограничены 32 МБ памяти. Это ограничение может быть удалено с помощью некоторой комбинации пакетов обновления и взломов реестра, или вы можете скомпилировать dcraw для использования более нового Win32 API. У Томаса Найли (из Pentium FDIV fame) есть страница, описывающая проблему и различные обходные пути. cybercom.net /~dcoffin/ dcraw
3. Я так не думаю, потому что сбой происходит очень редко .. один или два раза в день, когда приложение работает непрерывно … соответствует qtcreator для Windows. раньше все работало нормально
4. вы должны запустить какой-либо инструмент для обнаружения утечек памяти. Я думаю, что у Qt Creator есть какой-то инструмент, предназначенный для этой цели. В версии Linux это Valgrind. Проверьте это qt-project.org/wiki/Profiling-and-Memory-Checking-Tools
5. Что изменилось между «работает нормально» и «сбой на ежедневной основе»?