Я знаю, что этот вопрос древний, но он отображается в верхней части результатов Google, поэтому я подумал, что отвечу на вопрос в названии -
. Один из способов идентифицировать проблема будет работать следующим образом:
Начать вход в сеанс, но также иметь другой сеанс (как другой пользователь или сеанс «tty» (Control + Alt + [F2 ...]), или через ssh или ...) уже открыт, с готовностью командной строки (bash).
Ввести ключ (но еще не нажать Return еще) эту команду:
вам может понадобиться к sudo, если ваша другая оболочка является другой учетной записью пользователя. Это одна длинная строкаgdb attach /usr/bin/gnome-shell $(pgrep -u ваш логин gnome-shell) -ex 'call gjs_dumpstack ()'
eg gdb attach /usr/bin/gnome-shell $(pgrep -u jdoe gnome-shell) -ex 'call gjs_dumpstack ()'
Как только оболочка «слишком занята», то есть «поймайте ее в действии», в другой оболочке нажмите Return, чтобы ее уловить. Он закроет оболочку и может убить вашу попытку входа в систему, но у вас будет обратная сторона.
Вы получите приветственный баннер от отладчика. (Вам также может быть сказано, что вам нужно установить некоторые пакеты debuginfo, по крайней мере, на Fedora, я не уверен, что Ubuntu будет делать то же самое, но я полагаю, что это похоже. На самом деле вам не нужно их отлаживать со стороны JavaScript (это относится только к отладке части C кода.)
Это покажет стек активных функций JavaScript, что почти наверняка покажет виновнику.
Вы можете найти более подробную информацию здесь: https://wiki.gnome.org/Projects/GnomeShell/Debugging