qemu-gdb.py (1237B)
1 #!/usr/bin/env python3 2 # 3 # GDB debugging support 4 # 5 # Copyright 2012 Red Hat, Inc. and/or its affiliates 6 # 7 # Authors: 8 # Avi Kivity <avi@redhat.com> 9 # 10 # This work is licensed under the terms of the GNU GPL, version 2 or 11 # later. See the COPYING file in the top-level directory. 12 13 # Usage: 14 # At the (gdb) prompt, type "source scripts/qemu-gdb.py". 15 # "help qemu" should then list the supported QEMU debug support commands. 16 17 import gdb 18 19 import os, sys 20 21 # Annoyingly, gdb doesn't put the directory of scripts onto the 22 # module search path. Do it manually. 23 24 sys.path.append(os.path.dirname(__file__)) 25 26 from qemugdb import aio, mtree, coroutine, tcg, timers 27 28 class QemuCommand(gdb.Command): 29 '''Prefix for QEMU debug support commands''' 30 def __init__(self): 31 gdb.Command.__init__(self, 'qemu', gdb.COMMAND_DATA, 32 gdb.COMPLETE_NONE, True) 33 34 QemuCommand() 35 coroutine.CoroutineCommand() 36 mtree.MtreeCommand() 37 aio.HandlersCommand() 38 tcg.TCGLockStatusCommand() 39 timers.TimersCommand() 40 41 coroutine.CoroutineSPFunction() 42 coroutine.CoroutinePCFunction() 43 coroutine.CoroutineBt() 44 45 # Default to silently passing through SIGUSR1, because QEMU sends it 46 # to itself a lot. 47 gdb.execute('handle SIGUSR1 pass noprint nostop')