MCPcopy Create free account
hub / github.com/nodejs/node / InspectionShell

Class InspectionShell

deps/v8/tools/grokdump.py:3752–4113  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3750 return
3751
3752class InspectionShell(cmd.Cmd):
3753 def __init__(self, reader, heap):
3754 cmd.Cmd.__init__(self)
3755 self.reader = reader
3756 self.heap = heap
3757 self.padawan = InspectionPadawan(reader, heap)
3758 self.prompt = "(grok) "
3759
3760 self.dd_start = 0
3761 self.dd_num = 0x10
3762 self.u_start = 0
3763 self.u_num = 0
3764
3765 def EvalExpression(self, expr):
3766 # Auto convert hex numbers to a python compatible format
3767 if expr[:2] == "00":
3768 expr = "0x"+expr
3769 result = None
3770 try:
3771 # Ugly hack to patch in register values.
3772 registers = [register
3773 for register,value in self.reader.ContextDescriptor().fields]
3774 registers.sort(key=lambda r: len(r))
3775 registers.reverse()
3776 for register in registers:
3777 expr = expr.replace("$"+register, str(self.reader.Register(register)))
3778 result = eval(expr)
3779 except Exception as e:
3780 print("**** Could not evaluate '%s': %s" % (expr, e))
3781 raise e
3782 return result
3783
3784 def ParseAddressExpr(self, expr):
3785 address = 0;
3786 try:
3787 result = self.EvalExpression(expr)
3788 except:
3789 return 0
3790 try:
3791 address = int(result)
3792 except Exception as e:
3793 print("**** Could not convert '%s' => %s to valid address: %s" % (
3794 expr, result , e))
3795 return address
3796
3797 def do_help(self, cmd=None):
3798 if len(cmd) == 0:
3799 print("Available commands")
3800 print("=" * 79)
3801 prefix = "do_"
3802 methods = inspect.getmembers(InspectionShell, predicate=inspect.ismethod)
3803 for name,method in methods:
3804 if not name.startswith(prefix): continue
3805 doc = inspect.getdoc(method)
3806 if not doc: continue
3807 name = prefix.join(name.split(prefix)[1:])
3808 description = doc.splitlines()[0]
3809 print((name + ": ").ljust(16) + description)

Callers 1

_AnalyzeMinidumpFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected