Вопрос Как я могу отлаживать, почему gnome-settings-daemon-localeexec не запускается при входе в систему?


Я использую Ubuntu Gnome 14.04, а gnome-settings-daemon-localeexec не запускается при входе в систему. Как я могу отлаживать, почему это происходит?

Я нашел этот вопрос: gnome-settings-daemon не запускается при входе в систему, но на самом деле это не решение для меня, поэтому я хочу отладить его и найти настоящую проблему и, возможно, файл, если понадобится.

Я опытный пользователь Linux, но я не знаю, как работает процесс запуска оболочки gnome и с чего начать.

РЕДАКТИРОВАТЬ:

Это могут быть связанные вопросы:

EDIT 2:

Я открыл отчет об ошибке на панели запуска, давайте посмотрим, поможет ли это: gnome-settings-daemon-localeexec не запускается при входе в систему

ИЗМЕНИТЬ 3:

Найденные другие темы, которые могут помочь:


4
2018-05-13 18:05


происхождения


+1 для хорошей исследовательской работы + хорошо отформатированный вопрос! :) - jobin


ответы:


Отладка - это процесс, поэтому я расскажу о процессе, который я бы использовал, чтобы атаковать такую ​​проблему. Вопросы:

  • он работает для новой учетной записи пользователя? (т. е. это общая проблема с системой или с одной учетной записью?)
  • как он должен быть запущен?
  • это действительно начинается?
  • если это так, это сбой или провал? (Это, вероятно, более вероятно, чем это не выполняется в первую очередь, и результаты аналогичны)

Если это проблема с учетной записью (пользовательская конфигурация), и она работает с недавно созданной учетной записью, вы можете отследить проблему, скопировав файлы конфигурации из сломанной учетной записи в рабочую учетную запись и протестировать логин до тех пор, пока он не сломается. (Или, наоборот, начните с сломанной учетной записи и удалите файлы и каталоги до тех пор, пока она не будет работать.) Подходите к этому как к итеративному процессу - начните, скопируйте каталог / файл, отмените учетную запись yes / no, устраните половину набора , перейти начать. Это может занять много времени, поэтому обычно люди просто перезагружают учетную запись и не потрудились отследить, что сломалось.

Если вы хотите отслеживать источник программного обеспечения проблемы, сначала посмотрите в ~ / .cache / gdm / session.log и / var / log / syslog, чтобы узнать, есть ли очевидные ошибки, связанные с вашей проблемой. Затем используйте источник:

$ apt-file search gnome-settings-daemon-localeexec
gnome-settings-daemon: /usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec
$ apt-get source gnome-settings-daemon
$ cd gnome-settings-daemon-*
$ grep -r gnome-settings-daemon-localeexec
...
data/gnome-settings-daemon.desktop.in.in:Exec=@libexecdir@/gnome-settings-daemon-localeexec
$ cat data/gnome-settings-daemon.desktop.in.in
[Desktop Entry]
Type=Application
_Name=GNOME Settings Daemon
Exec=@libexecdir@/gnome-settings-daemon-localeexec
OnlyShowIn=GNOME;
NoDisplay=true
X-GNOME-Autostart-Phase=Initialization
X-GNOME-Autostart-Notify=true
X-GNOME-AutoRestart=true

Итак, теперь мы знаем, что gnome-settings-daemon-localeexec запускается из файла .desktop с именем gnome-settings-daemon.desktop. Где он установлен?

$ locate gnome-settings-daemon.desktop
/usr/share/gnome/autostart/gnome-settings-daemon.desktop
$ file /usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec
/usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec: POSIX shell script, ASCII text executable
$ vi /usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec
# it is just a wrapper around /usr/lib/gnome-settings-daemon/gnome-settings-daemon

Попробуйте запустить его, чтобы увидеть, есть ли проблема с запуском реального демона (сбой и т. Д.):

$ /usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec

Вы также можете попробовать:

$ gnome-settings-daemon --debug

Выполняется автозапуск? Поиск «отладки gnome autostart» приводит к эта страница, который предлагает:

Enable = ложь

Чтобы включить отладку, установите для параметра debug / Enable значение «true» в   /gdm/custom.conf и перезапустить GDM.

Поэтому попробуйте это, а затем проверьте / var / log / syslog. Другой альтернативой здесь является изменение / usr / lib / gnome-settings-daemon / gnome-settings-daemon-localeexec и добавление отладочных инструкций. Это всего лишь сценарий оболочки, поэтому добавьте что-то вроде echo "localeexec date $(date) env $(env)" > /tmp/log, Затем войдите в систему и проверьте / tmp / log.

(При отладке какой-либо данной программы обычно можно добавить приложения печати к «правильному» файлу журнала, но открытие собственного файла журнала часто проще и быстрее, поскольку оно отделяет вашу отладку отдельно и не требует понимания нескольких слои языка / системы / loglevel / filtering, которые применяются для любой данной программы.)

До сих пор регистрация и отладка, вероятно, выявили проблему. Для более сложных ошибок, которые лежат в скомпилированных двоичных файлах, вам придется загрузить источник с помощью apt-get source, изменить его, чтобы добавить код отладки (инструкции печати), скомпилировать измененный источник и установить его, а затем проверить. Самое замечательное в том, что весь apt/dpkg система разработана таким образом, чтобы сделать ее простой, быстрой и доступной только с несколькими командами. Отладчик может быть полезен для изучения сложного внутреннего состояния программы, но использование операторов печати - это более быстрый процесс, который работает во всех языках и системах, поэтому это обычно мой первоначальный подход.

РЕДАКТИРОВАТЬ:

В качестве резюме комментариев я заменил строку в / usr / lib / gnome-settings-daemon / gnome-settings-daemon-localeexec:

exec /usr/lib/gnome-settings-daemon/gnome-settings-daemon

с

nohup /usr/lib/gnome-settings-daemon/gnome-settings-daemon --debug >/tmp/gnome-settings-daemon.log 2>&1 &

для того, чтобы захватить выход процесса


4
2018-05-20 13:03



Спасибо, @bain. Просто для вашей информации, он также не работает для вновь созданных учетных записей, поэтому я попытаюсь использовать «подход к регистрации». Мое чувство, как я точно не знаю, заключается в том, что сценарий даже не запущен. Я сообщу вам, как только смогу это подтвердить. - adosaiguas
То, что я обнаружил, добавив эхо в gnome-settings-daemon-localeexec и включив ведение журнала в gnome-shell, является то, что gnome-settings-daemon-localeexec запускается при запуске gnome-shell, но по какой-то причине он умирает / shutdown, когда пользователь входит в систему и что я должен запустить его вручную после входа в систему (я делал это все время). Я понимаю, что это ошибка, и с этого момента я должен попытаться получить помощь от команды гномов. Любая другая идея, где я мог бы продолжить отладку? Может быть, прикрепляться к демону с помощью gdb перед входом в систему? - adosaiguas
@adosaiguas Захват вывода процесса, т.е. в g-s-d-localeexec вместо exec /.../gnome-settings-daemon делать (/.../gnome-settings-daemon --debug)&>/tmp/gsd.log, Это также покажет вам, получит ли процесс сигнал и умрет. В качестве альтернативы вы можете обернуть весь скрипт - mv g-s-d-localeexec в g-d-s-localeexec.real, затем в g-d-s.localeexec запустите исполняемый файл .real и перенаправьте вывод. - bain
@adosaiguas Еще одна вещь, которую вы можете попробовать - запустить ее под strace: просто положите strace  перед вызовом gnome-settings-daemon и убедитесь, что вы перенаправляете выход где-нибудь. Он сбрасывает довольно много выходных данных, но часто, если процесс внезапно умирает, вы увидите некоторый системный столбец, который провалился как раз перед тем, как он умрет. - bain
Я заменил строку exec следующим образом: (/ usr / lib / gnome-settings-daemon / gnome-settings-daemon --debug) &> / tmp / gnome-settings-daemon.log 2> & 1 и ничего нет записанный в журнал. Я попробую с этим strace. - adosaiguas