web-dev-qa-db-ja.com

ログイン時にgnome-settings-daemon-localeexecが開始されない理由をデバッグするにはどうすればよいですか?

Ubuntu Gnome 14.04を使用していますが、ログイン時にgnome-settings-daemon-localeexecが開始されません。これが起こっている理由をデバッグするにはどうすればよいですか?

私はこの質問を見つけました: ログイン時にgnome-settings-daemonが起動しない 、しかしそれは本当に私にとって解決策ではないので、それをデバッグして本当の問題を見つけ、おそらく必要に応じてバグ。

私は経験豊富なLinuxユーザーですが、gnome Shellの起動プロセスがどのように機能し、どこから始めればよいかわかりません。

編集:

これらは関連する質問かもしれません:

編集2:

ランチパッドでバグレポートを開き、それが役立つかどうかを確認します。 ログイン時にgnome-settings-daemon-localeexecが開始されない

編集3:

役立つかもしれないこれらの他のスレッドを見つけました:

4
adosaiguas

デバッグはプロセスなので、このような問題を攻撃するために使用するプロセスについて説明します。質問は次のとおりです。

  • 新しいユーザーアカウントで機能しますか? (つまり、システムまたは1つのアカウントの一般的な問題ですか?)
  • どのように開始することになっていますか?
  • 実際に開始されていますか?
  • もしそうなら、それはクラッシュするか、そうでなければ失敗しますか? (これはおそらく、そもそも実行されていないよりも可能性が高く、結果は似ています)

アカウント(ユーザー構成)に問題があり、新しく作成されたアカウントで機能する場合は、構成ファイルを破損したアカウントから作業アカウントにコピーし、破損するまでログインをテストすることで問題を追跡できます。 (あるいは、壊れたアカウントから始め、それが機能するまでファイルとディレクトリを削除します。)これを反復プロセスとしてアプローチします。 、始めましょう。それは時間がかかる可能性があるため、通常、人々はアカウントをリセットするだけで、何が壊れたかを追跡することを気にしません。

問題のソフトウェアソースを追跡する場合は、最初に〜/ .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がgnome-settings-daemon.desktopという.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

自動起動は実行されていますか? 「debug gnome autostart」を検索すると、 このページ になります。

Enable = false

デバッグを有効にするには、/ gdm/custom.confファイルでdebug/Enableキーを「true」に設定し、GDMを再起動します。

それを試してから、/ var/log/syslogを確認してください。ここでの別の方法は、/ usr/lib/gnome-settings-daemon/gnome-settings-daemon-localeexecを変更し、デバッグステートメントを追加することです。これは単なるシェルスクリプトなので、echo "localeexec date $(date) env $(env)" > /tmp/logのようなものを追加します。次に、ログインして/ tmp/logを確認します。

(特定のプログラムをデバッグする場合、通常、「適切な」ログファイルに印刷ステートメントを追加する方法がありますが、独自のログファイルを開く方が簡単で迅速なことがよくあります。特定のプログラムに対応する言語/システム/ログレベル/フィルタリングのレイヤー。)

これまでのログ記録とデバッグでは、おそらく問題が明らかになりました。コンパイルされたバイナリにあるより難しいバグについては、apt-get sourceでソースをダウンロードし、それを修正してデバッグコード(文を印刷)を追加し、修正したソースをコンパイルしてインストールし、テストする必要があります。ここでの素晴らしいところは、apt/dpkgシステム全体が、わずかなコマンドでこれを簡単、迅速、アクセス可能にするように設計されていることです。デバッガーは、複雑な内部プログラムの状態を調べるのに役立ちますが、printステートメントを使用すると、すべての言語とシステムで機能する高速なプロセスになるため、通常は最初のアプローチです。

編集:

コメントの要約として、/ 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
bain