forked from OSchip/llvm-project
Added a new decorator function in the "lldb" module that can register a command automatically. We have just a few kinks to work out for the Xcode workflow and we will be ready to switch over to using this. To use this, you can decorate your python function as:
@lldb.command("new_command", "Documentation string for new_command...") def new_command(debugger, command, result, dict): .... No more need to register your command in the __lldb_init_module function! llvm-svn: 184274
This commit is contained in:
parent
67416d72a5
commit
88e0f618ea
|
@ -758,6 +758,26 @@
|
|||
|
||||
%pythoncode %{
|
||||
|
||||
def command(*args, **kwargs):
|
||||
from lldb import debugger
|
||||
"""A decorator function that registers an LLDB command line
|
||||
command that is bound to the function it is attached to."""
|
||||
class obj(object):
|
||||
"""The object that tracks adding the command to LLDB one time and handles
|
||||
calling the function on subsequent calls."""
|
||||
def __init__(self, function, command_name, doc = None):
|
||||
if doc:
|
||||
function.__doc__ = doc
|
||||
command = "command script add -f %s.%s %s" % (function.__module__, function.__name__, command_name)
|
||||
debugger.HandleCommand(command)
|
||||
self.function = function
|
||||
def __call__(self, *args, **kwargs):
|
||||
self.function(*args, **kwargs)
|
||||
def callable(function):
|
||||
"""Creates a callable object that gets used."""
|
||||
return obj(function, *args, **kwargs)
|
||||
return callable
|
||||
|
||||
class declaration(object):
|
||||
'''A class that represents a source declaration location with file, line and column.'''
|
||||
def __init__(self, file, line, col):
|
||||
|
|
Loading…
Reference in New Issue