Skip to content

Latest commit

 

History

History
52 lines (36 loc) · 1.52 KB

debugging.md

File metadata and controls

52 lines (36 loc) · 1.52 KB

Debugging

Looking Glass

Looking Glass is a built-in debugger and inspector tool that makes it possible to run arbitrary JS code inside the shell, visually select any object from the shell's scene, and much more.

It can be accessed by entering lg into the run dialog (Alt+F2).

Javascript stacktraces

gnome-shell is split between C and JavaScript. It is sometimes necessary to debug the interaction between the two, for example when javascript code triggers a warning or crash on the C side.

In gdb, the javascript stacktrace can be printed with

<gdb> gjs_dumpstack()

The SHELL_DEBUG environment variable can be used to print the javascript stack automatically:

  • backtrace-warning: when a warning is logged
  • backtrace-segfault: on segfaults

To log a stacktrace when some particular javascript code is reached, you can insert the following code:

console.trace('trace from doSomething()')

Debugging the session's gnome-shell proces

It is possible to attach gdb to the gnome-shell process of the existing login session (or with the native backend on a tty), but beware: When the debugger stops the gnome-shell process, the entire session will freeze.

It is necessary to use a second system to continue controlling the debugger, most conveniently in combination with screen:

  1. create a screen session
  2. detach the session
  3. ssh from a second system
  4. resume the screen session
  5. attach gdb to the gnome-shell process