qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH V1 12/32] vl: pause option


From: Dr. David Alan Gilbert
Subject: Re: [PATCH V1 12/32] vl: pause option
Date: Fri, 11 Sep 2020 18:59:34 +0100
User-agent: Mutt/1.14.6 (2020-07-11)

* Steven Sistare (steven.sistare@oracle.com) wrote:
> On 7/30/2020 1:03 PM, Alex Bennée wrote:
> > 
> > Steve Sistare <steven.sistare@oracle.com> writes:
> > 
> >> Provide the -pause command-line parameter and the QEMU_PAUSE environment
> >> variable to briefly pause QEMU in main and allow a developer to attach gdb.
> >> Useful when the developer does not invoke QEMU directly, such as when using
> >> libvirt.
> > 
> > How does this differ from -S?
> 
> The -S flag runs qemu to the main loop but does not start the guest.  Lots of 
> code
> that you may need to debug runs before you get there.

You might try the '--preconfig' option - that's pretty early on.
The other one is adding a chardev and telling it to wait for a server;
that'll wait until you telnet to the port.

(Either way, this patch shouldn't really be part of this series, it's a
separate discussion)

Dave

> - Steve
> >> Usage:
> >>   qemu -pause <seconds>
> >>   or
> >>   export QEMU_PAUSE=<seconds>
> >>
> >> Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
> >> ---
> >>  qemu-options.hx |  9 +++++++++
> >>  softmmu/vl.c    | 15 ++++++++++++++-
> >>  2 files changed, 23 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/qemu-options.hx b/qemu-options.hx
> >> index 708583b..8505cf2 100644
> >> --- a/qemu-options.hx
> >> +++ b/qemu-options.hx
> >> @@ -3668,6 +3668,15 @@ SRST
> >>      option is experimental.
> >>  ERST
> >>  
> >> +DEF("pause", HAS_ARG, QEMU_OPTION_pause, \
> >> +    "-pause secs    Pause for secs seconds on entry to main.\n", 
> >> QEMU_ARCH_ALL)
> >> +
> >> +SRST
> >> +``--pause secs``
> >> +    Pause for a number of seconds on entry to main.  Useful for attaching
> >> +    a debugger after QEMU has been launched by some other entity.
> >> +ERST
> >> +
> > 
> > It seems like having an option to race with the debugger is just asking
> > for trouble.
> > 
> >>  DEF("S", 0, QEMU_OPTION_S, \
> >>      "-S              freeze CPU at startup (use 'c' to start 
> >> execution)\n",
> >>      QEMU_ARCH_ALL)
> >> diff --git a/softmmu/vl.c b/softmmu/vl.c
> >> index 8478778..951994f 100644
> >> --- a/softmmu/vl.c
> >> +++ b/softmmu/vl.c
> >> @@ -2844,7 +2844,7 @@ static void create_default_memdev(MachineState *ms, 
> >> const char *path)
> >>  
> >>  void qemu_init(int argc, char **argv, char **envp)
> >>  {
> >> -    int i;
> >> +    int i, seconds;
> >>      int snapshot, linux_boot;
> >>      const char *initrd_filename;
> >>      const char *kernel_filename, *kernel_cmdline;
> >> @@ -2882,6 +2882,13 @@ void qemu_init(int argc, char **argv, char **envp)
> >>      QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
> >>      int mem_prealloc = 0; /* force preallocation of physical target 
> >> memory */
> >>  
> >> +    if (getenv("QEMU_PAUSE")) {
> >> +        seconds = atoi(getenv("QEMU_PAUSE"));
> >> +        printf("Pausing %d seconds for debugger. QEMU PID is %d\n",
> >> +               seconds, getpid());
> >> +        sleep(seconds);
> >> +    }
> >> +
> >>      os_set_line_buffering();
> >>  
> >>      error_init(argv[0]);
> >> @@ -3204,6 +3211,12 @@ void qemu_init(int argc, char **argv, char **envp)
> >>              case QEMU_OPTION_gdb:
> >>                  add_device_config(DEV_GDB, optarg);
> >>                  break;
> >> +            case QEMU_OPTION_pause:
> >> +                seconds = atoi(optarg);
> >> +                printf("Pausing %d seconds for debugger. QEMU PID is 
> >> %d\n",
> >> +                            seconds, getpid());
> >> +                sleep(seconds);
> >> +                break;
> >>              case QEMU_OPTION_L:
> >>                  if (is_help_option(optarg)) {
> >>                      list_data_dirs = true;
> > 
> > 
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK




reply via email to

[Prev in Thread] Current Thread [Next in Thread]