From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45151) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YtEuI-0007ZH-JE for qemu-devel@nongnu.org; Fri, 15 May 2015 08:40:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YtEuD-00052x-AH for qemu-devel@nongnu.org; Fri, 15 May 2015 08:40:02 -0400 Received: from goliath.siemens.de ([192.35.17.28]:38791) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YtEuD-00052a-14 for qemu-devel@nongnu.org; Fri, 15 May 2015 08:39:57 -0400 Message-ID: <5555E918.5070608@siemens.com> Date: Fri, 15 May 2015 14:39:52 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <1431621835-7565-1-git-send-email-peter.maydell@linaro.org> <87382yp90i.fsf@blackfin.pond.sub.org> <87egmighkn.fsf@blackfin.pond.sub.org> In-Reply-To: <87egmighkn.fsf@blackfin.pond.sub.org> Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 0/3] scripts/qemu-gdb: Add event tracing support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , Peter Maydell Cc: QEMU Developers , Stefan Hajnoczi , Patch Tracking On 2015-05-15 14:18, Markus Armbruster wrote: > Peter Maydell writes: > >> On 15 May 2015 at 08:58, Markus Armbruster 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