diff options
author | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2017-11-01 10:26:46 +0200 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2017-11-28 09:17:24 +0200 |
commit | 1fdeb68013ae3c716e32dadbf9269027836ff732 (patch) | |
tree | 18bf2f6baba9fb0c9574fe13c6dd9e9c60f76612 | |
parent | 3baf9ce7e80da5fc15dbc7b413f99081f344aaa9 (diff) | |
download | weston-1fdeb68013ae3c716e32dadbf9269027836ff732.tar.gz weston-1fdeb68013ae3c716e32dadbf9269027836ff732.tar.bz2 weston-1fdeb68013ae3c716e32dadbf9269027836ff732.zip |
weston: add wait-for-debugger option
When you need to start Weston via weston-launch, systemd unit, or any
other runner, it is annoying to try to get in with a debugger,
especially if the thing you are interested in happens at start-up. To
make it easy, a new option is introduced.
The new option, implemented both as a command line option and a
weston.ini option, raises SIGSTOP early in the start-up, before the
weston_compositor has been created. This allows one to attach a debugger
at a known point in execution, and resume execution with SIGCONT.
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Reviewed-by: Ian Ray <ian.ray@ge.com>
-rw-r--r-- | compositor/main.c | 13 | ||||
-rw-r--r-- | man/weston.ini.man | 8 | ||||
-rw-r--r-- | man/weston.man | 8 |
3 files changed, 29 insertions, 0 deletions
diff --git a/compositor/main.c b/compositor/main.c index 9f00ee3a..32fb33e8 100644 --- a/compositor/main.c +++ b/compositor/main.c @@ -557,6 +557,7 @@ usage(int error_code) " --log=FILE\t\tLog to the given file\n" " -c, --config=FILE\tConfig file to load, defaults to weston.ini\n" " --no-config\t\tDo not read weston.ini\n" + " --wait-for-debugger\tRaise SIGSTOP on start-up\n" " -h, --help\t\tThis help message\n\n"); #if defined(BUILD_DRM_COMPOSITOR) @@ -1787,6 +1788,7 @@ int main(int argc, char *argv[]) struct weston_seat *seat; struct wet_compositor user_data; int require_input; + int32_t wait_for_debugger = 0; const struct weston_option core_options[] = { { WESTON_OPTION_STRING, "backend", 'B', &backend }, @@ -1800,6 +1802,7 @@ int main(int argc, char *argv[]) { WESTON_OPTION_BOOLEAN, "version", 0, &version }, { WESTON_OPTION_BOOLEAN, "no-config", 0, &noconfig }, { WESTON_OPTION_STRING, "config", 'c', &config_file }, + { WESTON_OPTION_BOOLEAN, "wait-for-debugger", 0, &wait_for_debugger }, }; if (os_fd_set_cloexec(fileno(stdin))) { @@ -1863,6 +1866,16 @@ int main(int argc, char *argv[]) section = weston_config_get_section(config, "core", NULL, NULL); + if (!wait_for_debugger) + weston_config_section_get_bool(section, "wait-for-debugger", + &wait_for_debugger, 0); + if (wait_for_debugger) { + weston_log("Weston PID is %ld - " + "waiting for debugger, send SIGCONT to continue...\n", + (long)getpid()); + raise(SIGSTOP); + } + if (!backend) { weston_config_section_get_string(section, "backend", &backend, NULL); diff --git a/man/weston.ini.man b/man/weston.ini.man index 4cfefc91..f237fd60 100644 --- a/man/weston.ini.man +++ b/man/weston.ini.man @@ -181,6 +181,14 @@ require an input device for launch sets Weston's pageflip timeout in milliseconds. This sets a timer to exit gracefully with a log message and an exit code of 1 in case the DRM driver is non-responsive. Setting it to 0 disables this feature. +.TP 7 +.BI "wait-for-debugger=" true +Raises SIGSTOP before initializing the compositor. This allows the user to +attach with a debugger and continue execution by sending SIGCONT. This is +useful for debugging a crash on start-up when it would be inconvenient to +launch weston directly from a debugger. Boolean, defaults to +.BR false . +There is also a command line option to do the same. .SH "LIBINPUT SECTION" The diff --git a/man/weston.man b/man/weston.man index face2298..33f0a0b2 100644 --- a/man/weston.man +++ b/man/weston.man @@ -165,6 +165,14 @@ Weston will export .B WAYLAND_DISPLAY with this value in the environment for all child processes to allow them to connect to the right server automatically. +.TP +\fB\-\-wait-for-debugger\fR +Raises SIGSTOP before initializing the compositor. This allows the user to +attach with a debugger and continue execution by sending SIGCONT. This is +useful for debugging a crash on start-up when it would be inconvenient to +launch weston directly from a debugger. There is also a +.IR weston.ini " option to do the same." +. .SS DRM backend options: See .BR weston-drm (7). |