diff options
Diffstat (limited to 'examples/python/shadow.py')
-rw-r--r-- | examples/python/shadow.py | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/examples/python/shadow.py b/examples/python/shadow.py deleted file mode 100644 index 0556cfc553ce..000000000000 --- a/examples/python/shadow.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/python - -import lldb -import shlex - - -@lldb.command("shadow") -def check_shadow_command(debugger, command, exe_ctx, result, dict): - '''Check the currently selected stack frame for shadowed variables''' - process = exe_ctx.GetProcess() - state = process.GetState() - if state != lldb.eStateStopped: - print >>result, "process must be stopped, state is %s" % lldb.SBDebugger.StateAsCString( - state) - return - frame = exe_ctx.GetFrame() - if not frame: - print >>result, "invalid frame" - return - # Parse command line args - command_args = shlex.split(command) - # TODO: add support for using arguments that are passed to this command... - - # Make a dictionary of variable name to "SBBlock and SBValue" - shadow_dict = {} - - num_shadowed_variables = 0 - # Get the deepest most block from the current frame - block = frame.GetBlock() - # Iterate through the block and all of its parents - while block.IsValid(): - # Get block variables from the current block only - block_vars = block.GetVariables(frame, True, True, True, 0) - # Iterate through all variables in the current block - for block_var in block_vars: - # Since we can have multiple shadowed variables, we our variable - # name dictionary to have an array or "block + variable" pairs so - # We can correctly print out all shadowed variables and whow which - # blocks they come from - block_var_name = block_var.GetName() - if block_var_name in shadow_dict: - shadow_dict[block_var_name].append(block_var) - else: - shadow_dict[block_var_name] = [block_var] - # Get the parent block and continue - block = block.GetParent() - - num_shadowed_variables = 0 - if shadow_dict: - for name in shadow_dict.keys(): - shadow_vars = shadow_dict[name] - if len(shadow_vars) > 1: - print '"%s" is shadowed by the following declarations:' % (name) - num_shadowed_variables += 1 - for shadow_var in shadow_vars: - print >>result, str(shadow_var.GetDeclaration()) - if num_shadowed_variables == 0: - print >>result, 'no variables are shadowed' |