[前][次][番号順一覧][スレッド一覧]

ruby-changes:58412

From: Nobuyoshi <ko1@a...>
Date: Thu, 24 Oct 2019 23:39:25 +0900 (JST)
Subject: [ruby-changes:58412] 8439caab0a (master): Refined `rp` output [ci skip]

https://git.ruby-lang.org/ruby.git/commit/?id=8439caab0a

From 8439caab0ac91aa33176060bb81cb4197ab21069 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Thu, 24 Oct 2019 23:37:19 +0900
Subject: Refined `rp` output [ci skip]

So that the result structure can be accessed as `$number`
variables, not a mere `VALUE`.

diff --git a/misc/lldb_cruby.py b/misc/lldb_cruby.py
index 619f97d..93663b2 100755
--- a/misc/lldb_cruby.py
+++ b/misc/lldb_cruby.py
@@ -111,30 +111,30 @@ def lldb_inspect(debugger, target, result, val): https://github.com/ruby/ruby/blob/trunk/misc/lldb_cruby.py#L111
         tRBasic = target.FindFirstType("struct RBasic").GetPointerType()
         val = val.Cast(tRBasic)
         flags = val.GetValueForExpressionPath("->flags").GetValueAsUnsigned()
+        flaginfo = ""
         if (flags & RUBY_FL_PROMOTED) == RUBY_FL_PROMOTED:
-            print("[PROMOTED] ", file=result)
+            flaginfo += "[PROMOTED] "
         if (flags & RUBY_FL_FREEZE) == RUBY_FL_FREEZE:
-            print("[FROZEN] ", file=result)
+            flaginfo += "[FROZEN] "
         flType = flags & RUBY_T_MASK
         if flType == RUBY_T_NONE:
-            print('T_NONE: %s' % val.Dereference(), file=result)
+            print('T_NONE: %s%s' % (flaginfo, val.Dereference()), file=result)
         elif flType == RUBY_T_NIL:
-            print('T_NIL: %s' % val.Dereference(), file=result)
+            print('T_NIL: %s%s' % (flaginfo, val.Dereference()), file=result)
         elif flType == RUBY_T_OBJECT:
-            tRObject = target.FindFirstType("struct RObject").GetPointerType()
-            val = val.Cast(tRObject)
-            print('T_OBJECT: %s' % val.Dereference(), file=result)
+            result.write('T_OBJECT: %s' % flaginfo)
+            append_command_output(debugger, "print *(struct RObject*)%0#x" % val.GetValueAsUnsigned(), result)
         elif flType == RUBY_T_CLASS or flType == RUBY_T_MODULE or flType == RUBY_T_ICLASS:
-            tRClass = target.FindFirstType("struct RClass").GetPointerType()
-            val = val.Cast(tRClass)
-            print('T_%s: %s' % ('CLASS' if flType == RUBY_T_CLASS else 'MODULE' if flType == RUBY_T_MODULE else 'ICLASS', val.Dereference()), file=result)
+            result.write('T_%s: %s' % ('CLASS' if flType == RUBY_T_CLASS else 'MODULE' if flType == RUBY_T_MODULE else 'ICLASS', flaginfo))
+            append_command_output(debugger, "print *(struct RClass*)%0#x" % val.GetValueAsUnsigned(), result)
         elif flType == RUBY_T_STRING:
+            result.write('T_STRING: %s' % flaginfo)
             tRString = target.FindFirstType("struct RString").GetPointerType()
             ptr, len = string2cstr(val.Cast(tRString))
             append_command_output(debugger, "print *(const char (*)[%d])%0#x" % (len, ptr), result)
         elif flType == RUBY_T_SYMBOL:
-            tRSymbol = target.FindFirstType("struct RSymbol").GetPointerType()
-            print(val.Cast(tRSymbol).Dereference(), file=result)
+            result.write('T_SYMBOL: %s' % flaginfo)
+            append_command_output(debugger, "print *(struct RSymbol*)%0#x" % val.GetValueAsUnsigned(), result)
         elif flType == RUBY_T_ARRAY:
             tRArray = target.FindFirstType("struct RArray").GetPointerType()
             val = val.Cast(tRArray)
@@ -145,7 +145,7 @@ def lldb_inspect(debugger, target, result, val): https://github.com/ruby/ruby/blob/trunk/misc/lldb_cruby.py#L145
                 len = val.GetValueForExpressionPath("->as.heap.len").GetValueAsSigned()
                 ptr = val.GetValueForExpressionPath("->as.heap.ptr")
                 #print(val.GetValueForExpressionPath("->as.heap"), file=result)
-            result.write("T_ARRAY: len=%d" % len)
+            result.write("T_ARRAY: %slen=%d" % (flaginfo, len))
             if flags & RUBY_FL_USER1:
                 result.write(" (embed)")
             elif flags & RUBY_FL_USER2:
@@ -155,11 +155,12 @@ def lldb_inspect(debugger, target, result, val): https://github.com/ruby/ruby/blob/trunk/misc/lldb_cruby.py#L155
                 capa = val.GetValueForExpressionPath("->as.heap.aux.capa").GetValueAsSigned()
                 result.write(" (ownership) capa=%d" % capa)
             if len == 0:
-                result.write(" {(empty)}")
+                result.write(" {(empty)}\n")
             else:
                 result.write("\n")
                 append_command_output(debugger, "expression -Z %d -fx -- (const VALUE*)%0#x" % (len, ptr.GetValueAsUnsigned()), result)
         elif flType == RUBY_T_HASH:
+            result.write("T_HASH: %s" % flaginfo)
             append_command_output(debugger, "p *(struct RHash *) %0#x" % val.GetValueAsUnsigned(), result)
         elif flType == RUBY_T_BIGNUM:
             tRBignum = target.FindFirstType("struct RBignum").GetPointerType()
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]