Мой Eclipse продолжает сбрасывать настройки проекта для препроцессора C++, включая поставщиков, в частности, Build Output Parser и встроенный компилятор. Я пытался воссоздать проект, но это не помогает. Проект относится к типу "Makefile project с существующим кодом". Я не делаю ничего особенного, чтобы вызвать это - просто пишу код.

Кажется, это происходит чаще, когда я выполняю операции git, но файлы / папки .cproject, .project и .settings не находятся под контролем исходного кода - они находятся в моем файле фильтра gitignore и не добавляются. Смотрите следующее.

$ git ls-files -o -i --exclude-standard  | grep -e project -e settings
.cproject
.project
.settings/language.settings.xml

Это сильно зависит от того, как часто это происходит. Иногда между перезагрузками 5-10 минут, иногда часов.

Вывод статистики немного интересен, после того как Eclipse начал переиндексацию с новыми настройками. Поскольку дата чтения не была обновлена, означает ли это, что файл был только записан и никогда не читается, т.е. Eclipse должен был обновлять его?

$ stat .settings/language.settings.xml 
  File: 'language.settings.xml'
  Size: 1176        Blocks: 8          IO Block: 4096   regular file
Device: 2dh/45d Inode: 62805379    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/  raahlb)   Gid: ( 1000/  raahlb)
Access: 2018-09-03 17:28:32.679448329 +0200
Modify: 2018-09-03 17:47:32.200812926 +0200
Change: 2018-09-03 17:47:32.200812926 +0200
 Birth: -

У кого-нибудь были подобные проблемы? Есть ли способ устранить неполадки в Eclipse, увидев, что, по их мнению, происходит? Его файл .log не записывается, когда возникает проблема.

Версия Eclipse: «Выпуск Oxygen.3a (4.7.3a), идентификатор сборки: 20180405-1200»
Версия CDT: «Инструменты разработки C/C++ SDK 9.4.3.201802261533»
Файловая система: btrfs
ОС: Ubuntu 16.04.5 LTS

1 ответ1

0

Проблема была в том, что Eclipse CDT не удалось запустить g++ для получения включений препроцессора и настроек компилятора. Не удалось с ошибкой "недостаточно памяти".

Проблема усугубилась тем, что моему компьютеру не хватило памяти. Включение overcommit с помощью sysctl -w vm.overcommit_memory=1 помогло мне. Я думаю, что разветвление java с его огромным распределением памяти испугало ядро, заставив думать, что оно понадобится снова.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .