सवाल मैं कैसे डिबग कर सकता हूं कि लॉगिन पर gnome-settings-daemon-localeexec क्यों शुरू नहीं हुआ है?


मैं उबंटू जीनोम 14.04 का उपयोग कर रहा हूं और लॉगिन पर gnome-settings-daemon-localeexec शुरू नहीं हुआ है। मैं कैसे डीबग कर सकता हूं यह क्यों हो रहा है?

मुझे यह सवाल मिला है: जब मैं लॉगिन करता हूं तो gnome-settings-daemon शुरू नहीं होता है, लेकिन यह वास्तव में मेरे लिए एक समाधान नहीं है, इसलिए मैं इसे डीबग करना चाहता हूं और असली समस्या ढूंढना चाहता हूं और यदि आवश्यक हो तो शायद एक बग फाइल करना चाहता हूं।

मैं एक अनुभवी लिनक्स उपयोगकर्ता हूं लेकिन मुझे नहीं पता कि gnome shell startup proces कैसे काम करता है और कहां से शुरू किया जाए।

संपादित करें:

ये संबंधित प्रश्न हो सकते हैं:

संपादित करें 2:

मैंने लॉन्चपैड पर एक बग रिपोर्ट खोली है, देखते हैं कि इससे मदद मिलती है: gnome-settings-daemon-localeexec लॉगिन पर शुरू नहीं हुआ है

संपादित करें 3:

इन अन्य धागे को मिला जो मदद कर सकते हैं:


4
2018-05-13 18:05


मूल


एक अच्छे शोध प्रयास के लिए +1 + अच्छी तरह से स्वरूपित सवाल! :) - jobin


जवाब:


डिबगिंग एक प्रक्रिया है, इसलिए मैं इस प्रक्रिया का वर्णन करूंगा जिसका उपयोग मैं ऐसी समस्या पर हमला करने के लिए करता हूं। प्रश्न हैं:

  • क्या यह एक नए उपयोगकर्ता खाते के लिए काम करता है? (यानी यह प्रणाली के साथ एक सामान्य समस्या है, या एक खाते के साथ?)
  • यह कैसे शुरू किया जाना चाहिए?
  • क्या यह वास्तव में शुरू किया जा रहा है?
  • यदि हां, तो क्या यह क्रैश हो रहा है या अन्यथा असफल रहा है? (यह शायद पहले स्थान पर नहीं चलने की तुलना में अधिक संभावना है, और परिणाम समान हैं)

यदि यह किसी खाते (उपयोगकर्ता कॉन्फ़िगरेशन) में कोई समस्या है, और यह एक नए बनाए गए खाते के साथ काम करता है, तो आप टूटने वाले खाते से कॉन्फ़िगरेशन फ़ाइलों को कॉपी करने वाले खाते में कॉपी करके और लॉगिन का परीक्षण करके समस्या को ट्रैक कर सकते हैं। (या, वैकल्पिक रूप से, टूटे हुए खाते से शुरू करें, और फ़ाइलों और निर्देशिकाओं को तब तक हटा दें जब तक यह काम न करे।) इसे एक पुनरावृत्ति प्रक्रिया के रूप में देखें - शुरू करें, एक निर्देशिका / फ़ाइल सेट कॉपी करें, क्या यह खाता हां / नहीं तोड़ता है, सेट के आधे को खत्म करता है , गोटो शुरू करो। यह समय लेने वाला हो सकता है, इसलिए आम तौर पर लोग खाते को रीसेट कर देंगे और टूटने के लिए परेशान नहीं होंगे।

यदि आप समस्या के सॉफ़्टवेयर स्रोत को ट्रैक करना चाहते हैं, तो पहले अपनी समस्या से संबंधित कोई स्पष्ट त्रुटियां देखने के लिए ~ / .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" के लिए खोज परिणाम यह पन्ना, जो बताता है:

= False सक्षम करें

डीबगिंग सक्षम करने के लिए, डीबग / सक्षम कुंजी को "सत्य" में सेट करें   /gdm/custom.conf फ़ाइल और जीडीएम को पुनरारंभ करें।

तो कोशिश करें, और फिर / var / log / syslog जांचें। यहां एक और विकल्प है / usr / lib / gnome-settings-daemon / gnome-settings-daemon-localeexec को संशोधित करना और डीबग कथन जोड़ें। यह सिर्फ एक शेल स्क्रिप्ट है, इसलिए कुछ जोड़ें echo "localeexec date $(date) env $(env)" > /tmp/log। फिर लॉग इन करें और चेक / tmp / log।

(किसी भी दिए गए प्रोग्राम को डिबग करने पर आमतौर पर आपके प्रिंट स्टेटमेंट को "उचित" लॉग फ़ाइल में जोड़ने का एक तरीका होता है, लेकिन अपनी खुद की लॉग फ़ाइल खोलना अक्सर आसान और तेज़ होता है, क्योंकि यह आपके डिबगिंग को अलग रखता है, और एकाधिक को समझने की आवश्यकता नहीं होती है किसी भी दिए गए कार्यक्रम के लिए भाषा / प्रणाली / loglevel / फ़िल्टरिंग की परतें हैं।)

अब तक लॉगिंग और डिबगिंग शायद इस मुद्दे को उजागर कर देगी। कठोर बग के लिए, जो संकलित बाइनरी में स्थित है, आपको स्रोत को डाउनलोड करना होगा 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



धन्यवाद @ बैन। सिर्फ आपकी जानकारी के लिए, यह नए बनाए गए खातों के लिए भी विफल रहता है, इसलिए मैं "लॉगिंग दृष्टिकोण" के साथ प्रयास करूंगा। मेरी भावना, जैसा कि मैं निश्चित रूप से नहीं जानता, यह है कि लिपि भी लॉन्च नहीं हुई है। एक बार जब मैं इसकी पुष्टि कर सकता हूं तो मैं आपको बता दूंगा। - adosaiguas
Gnome-settings-daemon-localeexec में गूंज जोड़कर मुझे पता चला है और gnome-shell पर लॉगिंग सक्षम करके यह है कि gnome-settings-daemon-localeexec लॉन्च किया जाता है जब gnome-shell प्रारंभ होता है, लेकिन किसी कारण से यह मर जाता है / जब उपयोगकर्ता लॉग इन करता है और उसे लॉग इन करने के बाद इसे मैन्युअल रूप से शुरू करना होता है (मैं इसे हर समय कर रहा हूं)। मैं समझता हूं कि यह बग है और अब से मुझे gnome टीम से मदद लेने की कोशिश करनी चाहिए। कोई अन्य विचार जहां मैं डीबगिंग जारी रख सकता था? लॉग इन करने से पहले शायद gdb के साथ डिमन को जोड़ना? - adosaiguas
@adosaiguas प्रक्रिया के आउटपुट को कैप्चर करें यानी। के बजाय जी-एस-डी-लोकेलएक्सैक में 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  gnome-settings-daemon पर कॉल के सामने और सुनिश्चित करें कि आप आउटपुट को कहीं भी रीडायरेक्ट करते हैं। यह काफी उत्पादन आउटपुट करता है, लेकिन अक्सर अगर प्रक्रिया अचानक मर रही है तो आप कुछ सिस्कोल देखेंगे जो मरने से ठीक पहले विफल रही थी। - bain
मैंने इस द्वारा निष्पादन लाइन को प्रतिस्थापित कर दिया है: (/ usr / lib / gnome-settings-daemon / gnome-settings-daemon --debug) &> / tmp / gnome-settings-daemon.log 2> और 1 और कुछ भी नहीं है लॉग को लिखा है। मैं उस स्ट्रेस के साथ कोशिश करूंगा। - adosaiguas