class NextInstructionAddress(gdb.Command):
    """
Run until Next Instruction address.

Usage: nia

Put a temporary breakpoint at the address of the next instruction, and continue.

Useful to step over int interrupts.

See also: http://stackoverflow.com/questions/24491516/how-to-step-over-interrupt-calls-when-debugging-a-bootloader-bios-with-gdb-and-q
"""

    def __init__(self):
        super().__init__('nia', gdb.COMMAND_BREAKPOINTS, gdb.COMPLETE_NONE,
            False)

    def invoke(self, arg, from_tty):
        frame = gdb.selected_frame()
        arch = frame.architecture()
        pc = gdb.selected_frame().pc()
        length = arch.disassemble(pc)[0]['length']
        gdb.Breakpoint('*' + str(pc + length), temporary=True)
        gdb.execute('continue')


NextInstructionAddress()

8d15a32bf4a7ba02dc920ce9807db03dab5ce632
class NextInstructionAddress(gdb.Command):
    <mask token>

    def __init__(self):
        super().__init__('nia', gdb.COMMAND_BREAKPOINTS, gdb.COMPLETE_NONE,
            False)
    <mask token>


<mask token>

class NextInstructionAddress(gdb.Command):
    <mask token>

    def __init__(self):
        super().__init__('nia', gdb.COMMAND_BREAKPOINTS, gdb.COMPLETE_NONE,
            False)

    def invoke(self, arg, from_tty):
        frame = gdb.selected_frame()
        arch = frame.architecture()
        pc = gdb.selected_frame().pc()
        length = arch.disassemble(pc)[0]['length']
        gdb.Breakpoint('*' + str(pc + length), temporary=True)
        gdb.execute('continue')


<mask token>

class NextInstructionAddress(gdb.Command):
    """
Run until Next Instruction address.

Usage: nia

Put a temporary breakpoint at the address of the next instruction, and continue.

Useful to step over int interrupts.

See also: http://stackoverflow.com/questions/24491516/how-to-step-over-interrupt-calls-when-debugging-a-bootloader-bios-with-gdb-and-q
"""

    def __init__(self):
        super().__init__('nia', gdb.COMMAND_BREAKPOINTS, gdb.COMPLETE_NONE,
            False)

    def invoke(self, arg, from_tty):
        frame = gdb.selected_frame()
        arch = frame.architecture()
        pc = gdb.selected_frame().pc()
        length = arch.disassemble(pc)[0]['length']
        gdb.Breakpoint('*' + str(pc + length), temporary=True)
        gdb.execute('continue')


<mask token>

class NextInstructionAddress(gdb.Command):
    """
Run until Next Instruction address.

Usage: nia

Put a temporary breakpoint at the address of the next instruction, and continue.

Useful to step over int interrupts.

See also: http://stackoverflow.com/questions/24491516/how-to-step-over-interrupt-calls-when-debugging-a-bootloader-bios-with-gdb-and-q
"""

    def __init__(self):
        super().__init__('nia', gdb.COMMAND_BREAKPOINTS, gdb.COMPLETE_NONE,
            False)

    def invoke(self, arg, from_tty):
        frame = gdb.selected_frame()
        arch = frame.architecture()
        pc = gdb.selected_frame().pc()
        length = arch.disassemble(pc)[0]['length']
        gdb.Breakpoint('*' + str(pc + length), temporary=True)
        gdb.execute('continue')


NextInstructionAddress()
