如何调试Gnome 3的慢速会话启动?

从11.10升级到12.04后,Gnome 3的登录过程非常缓慢(在升级之前的几秒钟内它需要大约60秒(Harddisk是SSD!))。

在VT中运行“top”表明gnome-shell产生大约90%的CPU负载,而dbus-daemon占用大约10%。 当gnome-shell的CPU负载降至正常水平(大约2-3%)时,对应于登录过程终止并显示桌面的时间。

取消激活我安装的四个gnome-shell扩展(Alternative Status Menu,Quit Button,Remove Accessibility,system-monitor)对会话启动时间没有任何影响。

登录Gnome classic不会显示慢启动会话。

系统日志不会显示任何可疑内容。 那么,识别潜在问题的最佳方法是什么?

我有一个类似的问题,并将其固定到联系人系统 – 我通过在gnome-shell进程上运行strace -p并查找系统调用的内容来做到这一点。

我在博客文章中给出了最终的解决方案。 希望有所帮助!

 --- /usr/share/gnome-shell/js/ui/overview-dist.js 2012-07-20 13:12:23.564769756 -0700 +++ /usr/share/gnome-shell/js/ui/overview.js 2012-07-20 16:40:14.076527986 -0700 @@ -210,7 +210,7 @@ this.addSearchProvider(new AppDisplay.AppSearchProvider()); this.addSearchProvider(new AppDisplay.SettingsSearchProvider()); this.addSearchProvider(new PlaceDisplay.PlaceSearchProvider()); - this.addSearchProvider(new ContactDisplay.ContactSearchProvider()); + // this.addSearchProvider(new ContactDisplay.ContactSearchProvider()); // Load remote search providers provided by applications RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider)); 

我知道这个问题很古老,但它显示在谷歌搜索结果的顶部附近,所以我想我会在标题中回答问题 –

识别问题的一种方法是这样的:

开始登录你的会话,但是,还有另一个会话(作为另一个用户,或在“tty”会话(Control + Alt + [F2 …]),或通过ssh,或…)已经打开,带有文本shell (bash)提示准备好了。

键入(但不要点击Return)此命令:

  • 如果您的其他shell是不同的用户帐户,则可能需要sudo此命令
  • 这是一条很长的路线

gdb attach /usr/bin/gnome-shell $(pgrep -u 你的登录 gnome-shell) -ex 'call gjs_dumpstack ()'

例如gdb attach /usr/bin/gnome-shell $(pgrep -u jdoe gnome-shell) -ex 'call gjs_dumpstack ()'

一旦shell“太忙”,即“在行为中捕获它”,在你的另一个shell中,点击Return以捕获它。 它会冻结shell并可能会杀死你的登录尝试,但你会有你的回溯。

您将从调试器中获得欢迎横幅。 (你可能还会告诉你至少需要在Fedora上安装一些debuginfo软件包,我不确定Ubuntu会不会这样做,但我认为它类似。你实际上不需要这些来调试JavaScript端事情;这只适用于调试代码的C部分。)

这将显示活动JavaScript函数的堆栈,这几乎肯定会显示罪魁祸首。

您可以在此处找到更多详细信息: https : //wiki.gnome.org/Projects/GnomeShell/Debugging

你有很多照片并使用Nautilus吗? 也许你受LaunchPad Bug 505085的影响- gnome-settings-daemon广泛的磁盘使用情况 ? 有关变通方法,请参见注释13或18 。

我有同样的问题,不知道如何调试。 但我停用了所有gnome shell扩展,然后它完美地工作。 我知道这不是问题的确切答案,但它可以帮助其他有类似问题的人(慢慢登录gnome 3会话)

您可以逐个停用以找出哪个扩展程序会产生问题 – 或者您取消激活所有扩展并再次激活;)