Jan Kiszka <jan.kis...@siemens.com> writes: > On 2015-05-15 14:18, Markus Armbruster wrote: >> Peter Maydell <peter.mayd...@linaro.org> writes: >> >>> On 15 May 2015 at 08:58, Markus Armbruster <arm...@redhat.com> 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?
Found here: https://stackoverflow.com/questions/16553283/python-code-in-gdb-init-file-gdbinit It doesn't work for me without it. >> 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"). Neat!