web-dev-qa-db-fra.com

Comment puis-je déboguer pourquoi gnome-settings-daemon-localeexec n'est pas démarré lors de la connexion?

J'utilise Ubuntu Gnome 14.04 et gnome-settings-daemon-localeexec n'est pas démarré à la connexion. Comment puis-je déboguer pourquoi cela se produit?

J'ai trouvé cette question: le démon gnome-settings-daemon ne démarre pas lorsque je me connecte , mais ce n'est pas vraiment une solution pour moi, je veux donc le déboguer et trouver le vrai problème et probablement bug si nécessaire.

Je suis un utilisateur Linux expérimenté, mais je ne sais pas comment le processus de démarrage de gnome Shell fonctionne ni par où commencer.

MODIFIER:

Ces questions pourraient être liées:

EDIT 2:

J'ai ouvert un rapport de bogue sur le tableau de bord, voyons si cela aide: gnome-settings-daemon-localeexec n'est pas démarré à la connexion

EDIT 3:

Trouvé ces autres discussions qui pourraient aider:

4
adosaiguas

Le débogage est un processus, je vais donc décrire le processus que j'utiliserais pour attaquer un tel problème. Les questions sont:

  • ça marche pour un nouveau compte utilisateur? (c.-à-d. est-ce un problème générique avec le système, ou avec un compte?)
  • comment est-il censé être démarré?
  • est-ce que cela commence réellement?
  • si oui, est-ce qu'il tombe en panne ou échoue? (C’est peut-être plus probable que cela n’a pas été lancé au départ, et les résultats sont similaires)

S'il y a un problème avec un compte (utilisateur config) et qu'il fonctionne avec un compte nouvellement créé, vous pouvez le localiser en copiant les fichiers de configuration du compte rompu dans le compte actif et en testant la connexion, jusqu'à la rupture. (Ou alternativement, commencez avec le compte cassé, et supprimez les fichiers et les répertoires jusqu'à ce que cela fonctionne.) Abordez ceci en tant que processus itératif - commencez, copiez un ensemble répertoire/fichier, a-t-il cassé le compte oui/non, éliminé la moitié de l'ensemble , allez commencer. Cela peut prendre beaucoup de temps. Par conséquent, les utilisateurs ne font que réinitialiser leur compte et ne recherchent pas ce qui a fait faillite.

Si vous voulez localiser la source logicielle du problème, commencez par regarder dans ~/.cache/gdm/session.log et/var/log/syslog pour voir s’il existe des erreurs évidentes liées à votre problème. Ensuite, utilisez la source:

$ 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

Nous savons maintenant que gnome-settings-daemon-localeexec est exécuté à partir d'un fichier .desktop appelé gnome-settings-daemon.desktop. Où est-il installé?

$ 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

Essayez de l’exécuter pour voir s’il ya un problème d’exécution du démon lui-même (plantage, etc.):

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

Vous pouvez aussi essayer:

$ gnome-settings-daemon --debug

Le démarrage automatique est-il exécuté? La recherche de "debug gnome autostart" donne cette page , qui suggère:

Activer = faux

Pour activer le débogage, définissez la clé debug/Enable sur "true" dans le fichier /gdm/custom.conf et redémarrez GDM.

Essayez donc cela, puis vérifiez/var/log/syslog. Une autre alternative consiste à modifier/usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec et à ajouter des instructions de débogage. C'est juste un script Shell, alors ajoutez quelque chose comme echo "localeexec date $(date) env $(env)" > /tmp/log. Puis connectez-vous et vérifiez/tmp/log.

(Lors du débogage d’un programme donné, il existe généralement un moyen d’ajouter vos instructions print à un fichier journal "approprié", mais l’ouverture de votre propre fichier journal est souvent plus facile et plus rapide, car il permet de séparer le débogage et ne nécessite pas de comprendre les multiples fonctions. couches de langage/système/loglevel/filtrage en place pour un programme donné.)

La journalisation et le débogage jusqu’à présent auront probablement exposé le problème. Pour les bogues plus difficiles, qui se trouvent dans les fichiers binaires compilés, vous devrez télécharger le source avec apt-get source, le modifier pour ajouter du code de débogage (instructions print), compiler le source modifié et l'installer, puis le tester. Le grand avantage ici est que le système entier apt/dpkg est conçu pour rendre ceci facile, rapide et accessible avec seulement quelques commandes. Un débogueur peut être utile pour examiner l'état d'un programme interne complexe, mais utiliser des instructions d'impression est un processus plus rapide qui fonctionne dans toutes les langues et tous les systèmes. C'est donc généralement mon approche initiale.

MODIFIER:

En résumé des commentaires, j'ai remplacé la ligne dans/usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexec:

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

avec

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

afin de capturer la sortie du processus

4
bain