From a47081325b439ab6fb4991c98bede726cf49c186 Mon Sep 17 00:00:00 2001 From: Vasily Levchenko Date: Thu, 19 Nov 2020 05:48:22 +0100 Subject: [PATCH] [debug][bindings][python][code formating] PEP8 --- .../llvmDebugInfoC/src/scripts/konan_lldb.py | 53 ++++++++++++++----- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/kotlin-native/llvmDebugInfoC/src/scripts/konan_lldb.py b/kotlin-native/llvmDebugInfoC/src/scripts/konan_lldb.py index 0413b601240..e688c2d397f 100644 --- a/kotlin-native/llvmDebugInfoC/src/scripts/konan_lldb.py +++ b/kotlin-native/llvmDebugInfoC/src/scripts/konan_lldb.py @@ -97,7 +97,8 @@ def is_instance_of(addr, typeinfo): def is_string_or_array(value): start = time.monotonic() - soa = evaluate("(int)IsInstance({0:#x}, {1:#x}) ? 1 : ((int)Konan_DebugIsArray({0:#x})) ? 2 : 0)".format(value.unsigned, _symbol_loaded_address('kclass:kotlin.String'))).unsigned + soa = evaluate("(int)IsInstance({0:#x}, {1:#x}) ? 1 : ((int)Konan_DebugIsArray({0:#x})) ? 2 : 0)" + .format(value.unsigned, _symbol_loaded_address('kclass:kotlin.String'))).unsigned log(lambda: "is_string_or_array:{:#x}:{}".format(value.unsigned, soa)) bench(start, lambda: "is_string_or_array({:#x}) = {}".format(value.unsigned, soa)) return soa @@ -108,7 +109,8 @@ def type_info(value): log(lambda: "type_info({:#x}: {})".format(value.unsigned, value.GetTypeName())) if value.GetTypeName() != "ObjHeader *": return None - expr = "*(void **)((uintptr_t)(*(void**){0:#x}) & ~0x3) == **(void***)((uintptr_t)(*(void**){0:#x}) & ~0x3) ? *(void **)((uintptr_t)(*(void**){0:#x}) & ~0x3) : (void *)0".format(value.unsigned) + expr = "*(void **)((uintptr_t)(*(void**){0:#x}) & ~0x3) == **(void***)((uintptr_t)(*(void**){0:#x}) & ~0x3) " \ + "? *(void **)((uintptr_t)(*(void**){0:#x}) & ~0x3) : (void *)0".format(value.unsigned) result = evaluate(expr) return result.unsigned if result.IsValid() and result.unsigned != 0 else None @@ -182,7 +184,8 @@ def select_provider(lldb_val, tip, internal_dict): log(lambda : "select_provider: {:#x} name:{} tip:{:#x}".format(lldb_val.unsigned, lldb_val.name, tip)) soa = is_string_or_array(lldb_val) log(lambda : "select_provider: {:#x} : soa: {}".format(lldb_val.unsigned, soa)) - ret = __FACTORY['string'](lldb_val, tip, internal_dict) if soa == 1 else __FACTORY['array'](lldb_val, tip, internal_dict) if soa == 2 \ + ret = __FACTORY['string'](lldb_val, tip, internal_dict) if soa == 1 \ + else __FACTORY['array'](lldb_val, tip, internal_dict) if soa == 2 \ else __FACTORY['object'](lldb_val, tip, internal_dict) log(lambda: "select_provider({:#x}) = {}".format(lldb_val.unsigned, ret)) bench(start, lambda: "select_provider({:#x})".format(lldb_val.unsigned)) @@ -198,7 +201,8 @@ class KonanHelperProvider(lldb.SBSyntheticValueProvider): return if self._children_count == 0: children_count = evaluate("(int)Konan_DebugGetFieldCount({:#x})".format(self._valobj.unsigned)).signed - log(lambda: "(int)[{}].Konan_DebugGetFieldCount({:#x}) = {}".format(self._valobj.name, self._valobj.unsigned, children_count)) + log(lambda: "(int)[{}].Konan_DebugGetFieldCount({:#x}) = {}".format(self._valobj.name, + self._valobj.unsigned, children_count)) self._children_count = children_count def _read_string(self, expr, error): @@ -212,7 +216,8 @@ class KonanHelperProvider(lldb.SBSyntheticValueProvider): def _read_type(self, index): type = _TYPES[self._field_type(index)](self._valobj) - log(lambda: "type:{0} of {1:#x} of {2:#x}".format(type, self._valobj.unsigned, self._valobj.unsigned + self._children[index].offset())) + log(lambda: "type:{0} of {1:#x} of {2:#x}".format(type, self._valobj.unsigned, + self._valobj.unsigned + self._children[index].offset())) return type def _deref_or_obj_summary(self, index, internal_dict = {}): @@ -293,27 +298,36 @@ class KonanObjectSyntheticProvider(KonanHelperProvider): self._children_count = 0 super(KonanObjectSyntheticProvider, self).__init__(valobj, False, internal_dict) self._children = [self._field_name(i) for i in range(self._children_count)] + log(lambda: "KonanObjectSyntheticProvider::__init__({:#x}) _children:{}".format(self._valobj.unsigned, + self._children)) def _field_name(self, index): log(lambda: "KonanObjectSyntheticProvider::_field_name({:#x}, {})".format(self._valobj.unsigned, index)) error = lldb.SBError() - name = self._read_string("(char *)Konan_DebugGetFieldName({:#x}, (int){})".format(self._valobj.unsigned, index), error) + name = self._read_string("(char *)Konan_DebugGetFieldName({:#x}, (int){})".format(self._valobj.unsigned, + index), + error) if not error.Success(): raise DebuggerException() - log(lambda: "KonanObjectSyntheticProvider::_field_name({:#x}, {}) = {}".format(self._valobj.unsigned, index, name)) + log(lambda: "KonanObjectSyntheticProvider::_field_name({:#x}, {}) = {}".format(self._valobj.unsigned, + index, name)) return name def num_children(self): - log(lambda: "KonanObjectSyntheticProvider::num_children({:#x}) = {}".format(self._valobj.unsigned, self._children_count)) + log(lambda: "KonanObjectSyntheticProvider::num_children({:#x}) = {}".format(self._valobj.unsigned, + self._children_count)) return self._children_count def has_children(self): - log(lambda: "KonanObjectSyntheticProvider::has_children({:#x}) = {}".format(self._valobj.unsigned, self._children_count > 0)) + log(lambda: "KonanObjectSyntheticProvider::has_children({:#x}) = {}".format(self._valobj.unsigned, + self._children_count > 0)) return self._children_count > 0 def get_child_index(self, name): log(lambda: "KonanObjectSyntheticProvider::get_child_index({:#x}, {})".format(self._valobj.unsigned, name)) index = self._children.index(name) + log(lambda: "KonanObjectSyntheticProvider::get_child_index({:#x}) index={}".format(self._valobj.unsigned, + index)) return index def get_child_at_index(self, index): @@ -326,7 +340,8 @@ class KonanObjectSyntheticProvider(KonanHelperProvider): def to_string(self): log(lambda: "to_string:{:#x}".format(self._valobj.unsigned)) - return super().to_string(lambda index: "{}: {}".format(self._field_name(index), self._deref_or_obj_summary(index))) + return super().to_string(lambda index: "{}: {}".format(self._field_name(index), + self._deref_or_obj_summary(index))) class KonanArraySyntheticProvider(KonanHelperProvider): def __init__(self, valobj, internal_dict): @@ -339,11 +354,13 @@ class KonanArraySyntheticProvider(KonanHelperProvider): type = self._field_type(0) def num_children(self): - log(lambda: "KonanArraySyntheticProvider::num_children({:#x}) = {}".format(self._valobj.unsigned, self._children_count)) + log(lambda: "KonanArraySyntheticProvider::num_children({:#x}) = {}".format(self._valobj.unsigned, + self._children_count)) return self._children_count def has_children(self): - log(lambda: "KonanArraySyntheticProvider::has_children({:#x}) = {}".format(self._valobj.unsigned, self._children_count> 0)) + log(lambda: "KonanArraySyntheticProvider::has_children({:#x}) = {}".format(self._valobj.unsigned, + self._children_count> 0)) return self._children_count > 0 def get_child_index(self, name): @@ -413,14 +430,17 @@ class KonanProxyTypeProvider: start = time.monotonic() log(lambda : "KonanProxyTypeProvider:{:#x}, name: {}".format(valobj.unsigned, valobj.name)) if valobj.unsigned == 0: - log(lambda : "KonanProxyTypeProvider:{:#x}, name: {} NULL syntectic {}".format(valobj.unsigned, valobj.name, valobj.IsValid())) + log(lambda : "KonanProxyTypeProvider:{:#x}, name: {} NULL syntectic {}".format(valobj.unsigned, valobj.name, + valobj.IsValid())) bench(start, lambda: "KonanProxyTypeProvider({:#x})".format(valobj.unsigned)) self._proxy = KonanNullSyntheticProvider(valobj) return tip = type_info(valobj) if not tip: - log(lambda : "KonanProxyTypeProvider:{:#x}, name: {} not initialized syntectic {}".format(valobj.unsigned, valobj.name, valobj.IsValid())) + log(lambda : "KonanProxyTypeProvider:{:#x}, name: {} not initialized syntectic {}".format(valobj.unsigned, + valobj.name, + valobj.IsValid())) bench(start, lambda: "KonanProxyTypeProvider({:#x})".format(valobj.unsigned)) self._proxy = KonanNotInitializedObjectSyntheticProvider(valobj) return @@ -436,6 +456,7 @@ class KonanProxyTypeProvider: def type_name_command(debugger, command, result, internal_dict): result.AppendMessage(evaluate('(char *)Konan_DebugGetTypeName({})'.format(command)).summary) + __KONAN_VARIABLE = re.compile('kvar:(.*)#internal') __KONAN_VARIABLE_TYPE = re.compile('^kfun:\\(\\)(.*)$') __TYPES_KONAN_TO_C = { @@ -453,6 +474,7 @@ __TYPES_KONAN_TO_C = { 'kotlin.Double': ('double', lambda v: v.value) } + def type_by_address_command(debugger, command, result, internal_dict): result.AppendMessage("DEBUG: {}".format(command)) tokens = command.split() @@ -464,6 +486,7 @@ def type_by_address_command(debugger, command, result, internal_dict): for t in types: result.AppendMessage("{}: {:#x}".format(t.name, t.GetStartAddress().GetLoadAddress(target))) + def symbol_by_name_command(debugger, command, result, internal_dict): target = debugger.GetSelectedTarget() process = target.GetProcess() @@ -480,6 +503,7 @@ def symbol_by_name_command(debugger, command, result, internal_dict): visited.append(name) result.AppendMessage("{}: {:#x}".format(name, symbol.GetStartAddress().GetLoadAddress(target))) + def konan_globals_command(debugger, command, result, internal_dict): target = debugger.GetSelectedTarget() process = target.GetProcess() @@ -511,6 +535,7 @@ def konan_globals_command(debugger, command, result, internal_dict): str_value = extractor(value) result.AppendMessage('{} {}: {}'.format(type, name, str_value)) + def __lldb_init_module(debugger, _): log(lambda: "init start") __FACTORY['object'] = lambda x, y, z: KonanObjectSyntheticProvider(x, y, z)