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

ruby-changes:58165

From: Nobuyoshi <ko1@a...>
Date: Wed, 9 Oct 2019 09:08:51 +0900 (JST)
Subject: [ruby-changes:58165] e078352a78 (master): lldb_cruby.py: fixed inspecting string [ci skip]

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

From e078352a787ce3d52b5147a5fdf69b89a9d60cff Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Wed, 9 Oct 2019 09:04:37 +0900
Subject: lldb_cruby.py: fixed inspecting string  [ci skip]

Show the size of String.

To see the whole contents even after NUL char:

```
(lldb) rp str
(const char [5]) $1 = "x"
(lldb) memory read -s1 --format x --count `sizeof($1)` -- &$1                                                                                          0x1010457a8: 0x78 0x00 0x61 0x61 0x61
```

diff --git a/misc/lldb_cruby.py b/misc/lldb_cruby.py
index 45ba6e3..619f97d 100755
--- a/misc/lldb_cruby.py
+++ b/misc/lldb_cruby.py
@@ -130,11 +130,8 @@ def lldb_inspect(debugger, target, result, val): https://github.com/ruby/ruby/blob/trunk/misc/lldb_cruby.py#L130
             print('T_%s: %s' % ('CLASS' if flType == RUBY_T_CLASS else 'MODULE' if flType == RUBY_T_MODULE else 'ICLASS', val.Dereference()), file=result)
         elif flType == RUBY_T_STRING:
             tRString = target.FindFirstType("struct RString").GetPointerType()
-            val = val.Cast(tRString)
-            if flags & RSTRING_NOEMBED:
-                print(val.GetValueForExpressionPath("->as.heap"), file=result)
-            else:
-                print(val.GetValueForExpressionPath("->as.ary"), file=result)
+            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)
-- 
cgit v0.10.2


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

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