[debug] make lldb printes more robust

`GetValueAsUnsigned` return result as a Python `long`, while *some*
versions of lldb require that an `int` is passed to
`ReadCStringFromMemory` down the line. So let's cast result to `int`,
which is 64 bit wide on Python2 anyway.

Also use nicer accessors and a simpler rule to find Kotlin types.
This commit is contained in:
Aleksey Kladov
2017-09-26 17:56:05 +03:00
committed by Vasily Levchenko
parent 0fb788d580
commit e3611ca883
+4 -4
View File
@@ -35,15 +35,15 @@ def kotlin_object_type_summary(lldb_val, internal_dict):
buff_len = evaluate( buff_len = evaluate(
"Konan_DebugObjectToUtf8Array((struct ObjHeader *) %s, Konan_DebugBuffer(), Konan_DebugBufferSize());" % lldb_val.GetValueAsUnsigned() "Konan_DebugObjectToUtf8Array((struct ObjHeader *) %s, Konan_DebugBuffer(), Konan_DebugBufferSize());" % lldb_val.GetValueAsUnsigned()
).GetValueAsUnsigned() ).unsigned
if not buff_len: if not buff_len:
return fallback return fallback
buff_addr = evaluate("Konan_DebugBuffer()").GetValueAsUnsigned() buff_addr = evaluate("Konan_DebugBuffer()").unsigned
error = lldb.SBError() error = lldb.SBError()
s = lldb_val.GetProcess().ReadCStringFromMemory(buff_addr, buff_len, error) s = lldb_val.GetProcess().ReadCStringFromMemory(int(buff_addr), int(buff_len), error)
return s if error.Success() else fallback return s if error.Success() else fallback
@@ -52,7 +52,7 @@ def __lldb_init_module(debugger, internal_dict):
type summary add \ type summary add \
--no-value \ --no-value \
--python-function konan_lldb.kotlin_object_type_summary \ --python-function konan_lldb.kotlin_object_type_summary \
-x "ObjHeader \*" \ "ObjHeader *" \
--category Kotlin\ --category Kotlin\
') ')
debugger.HandleCommand('type category enable Kotlin') debugger.HandleCommand('type category enable Kotlin')