#!/usr/bin/env python3 import imp import os import sys import common rungdb = imp.load_source('rungdb', os.path.join(common.root_dir, 'rungdb')) parser = common.get_argparse(argparse_args={ 'description': '''GDB step debug guest userland processes without gdbserver. More information at: https://github.com/cirosantilli/linux-kernel-module-cheat#gdb-step-debug-userland-processes ''' }) parser.add_argument( 'executable', help='Path to the executable to be debugged relative to the Buildroot build directory.' ) parser.add_argument( 'break', default=None, help='Break at this point, e.g. main.', nargs='?' ) args = common.setup(parser) addr = common.get_elf_entry(os.path.join(common.build_dir, args.executable)) extra_args = {} extra_args['before'] = '-ex \"add-symbol-file {} {}\"'.format(args.executable, hex(addr)) # Or else lx-symbols throws for arm: # gdb.MemoryError: Cannot access memory at address 0xbf0040cc # TODO understand better. # Also, lx-symbols overrides the add-symbol-file commands. extra_args['no_lxsymbols'] = True sys.exit(rungdb.main(args, extra_args))