[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0/3] scripts/qemu-gdb: Add event tracing support
From: |
Jan Kiszka |
Subject: |
Re: [Qemu-devel] [PATCH 0/3] scripts/qemu-gdb: Add event tracing support |
Date: |
Fri, 15 May 2015 14:39:52 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
On 2015-05-15 14:18, Markus Armbruster wrote:
> Peter Maydell <address@hidden> writes:
>
>> On 15 May 2015 at 08:58, Markus Armbruster <address@hidden> wrote:
>>> Since you're touching qemu-gdb.py anyway, could you stick in a brief
>>> comment explaining how to put it to use?
>>
>> Good idea. It turns out the answer is just "source it from gdb",
>> but it took me a little while to find that out, so worth commenting.
>> I also have a patch which makes it do the 'ignore SIGUSR1' bit
>> by doing 'handle SIGUSR1 pass noprint nostop' for you.
>
> Here's how to load scripts/qemu-gdb.py automatically:
>
> * Apply the appended patch to turn it into a gdb init file
>
> That's what it is, after all. It's not a standalone Python program.
>
> * Tell gdb to trust it
>
> Add a line like
>
> add-auto-load-safe-path ~/work/qemu/scripts/qemu-gdb.py
>
> to your ~/.gdbinit
>
> * Link it into the directory where you run gdb --args qemu...
>
> * Verify it works:
>
> $ gdb
> [...]
> (gdb) help qemu
> Prefix for QEMU debug support commands
>
> List of qemu subcommands:
>
> qemu coroutine -- Display coroutine backtrace
> qemu mtree -- Display the memory tree hierarchy
>
> Type "help qemu" followed by qemu subcommand name for full
> documentation.
> Type "apropos word" to search for commands related to "word".
> Command name abbreviations are allowed if unambiguous.
> (gdb)
>
> If you know a better way to do this, please post it.
>
Yep, that's the basic idea behind gdb python scripts: myapp-gdb.py gets
auto-pulled on "gdb myapp". Since some gdb 7.x, we have that security
feature above which prevents pulling from arbitrary sources.
>
> diff --git a/scripts/qemu-gdb.py b/scripts/qemu-gdb.py
> index 6c7f4fb..ac3087c 100644
> --- a/scripts/qemu-gdb.py
> +++ b/scripts/qemu-gdb.py
> @@ -1,5 +1,3 @@
> -#!/usr/bin/python
> -
> # GDB debugging support
> #
> # Copyright 2012 Red Hat, Inc. and/or its affiliates
> @@ -13,7 +11,7 @@
> # Contributions after 2012-01-13 are licensed under the terms of the
> # GNU GPL, version 2 or (at your option) any later version.
>
> -
> +python
What is this line doing?
> import gdb
>
> def isnull(ptr):
>
>
See also linux-4.x/scripts/gdb and
linux-4.x/Documentation/gdb-kernel-debugging.txt for more references.
For the kernel, we set the link during the build. Given the many aliases
for qemu and the fact that quite a few developers run from the build
directory, I guess that would make sense here as well.
Helper functions are another interesting facility to consider. Trivial
example: the kernel has $container_of(PTR, "TYPE", "ELEMENT").
Jan
--
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux
Re: [Qemu-devel] [PATCH 0/3] scripts/qemu-gdb: Add event tracing support, Stefan Hajnoczi, 2015/05/18
Re: [Qemu-devel] [PATCH 0/3] scripts/qemu-gdb: Add event tracing support, Stefan Hajnoczi, 2015/05/18