有没有办法教 Android Studio 在将鼠标悬停在变量上时如何显示 C++ 结构?

Is there a way to teach Android Studio how to display a C++ struct when hovering over the variable?

作为一个实际的例子,假设我有一个如下所示的结构:

struct MyFoo {
    std::string mValue;
    bool hasValue;
    MyFoo() : hasValue(false) {}
    MyFoo(std::string value) : mValue(value), hasValue(true) {}
};

如果我将鼠标悬停在该结构的一个实例上,Android Studio 会显示 + ☰ {MyFoo}。我可以展开它,并稍微向下钻取,看看内容是什么。 (我应该注意,这是一个过于简单化的示例;我的实际应用程序是一个复杂得多的结构,要查看值并不是很容易)。

有没有办法让它显示类似 + ☰ {MyFoo} <none>+ ☰ {MyFoo} "Hello, world" 的内容?

我可以看到 Android Studio 使用某些 STL 类型执行此操作,这表明某处有关于如何执行此操作的知识。

奖励问题:XCode怎么样?

据我所知,AndroidStudio 使用 LLDB 调试本机代码。

您可以使用 LLDB 命令添加自定义格式来显示这些变量。

参见:https://lldb.llvm.org/use/variable.html

最简单的方法 pretty-printing 是 LLDB 中的 Python 脚本(有关详细信息,请参阅 LLDB 文档 link,我将此示例作为基础)

(lldb) type summary add -P MyFoo
Enter your Python command(s). Type 'DONE' to end.
def function (valobj,internal_dict,options):
   mval = valobj.GetChildMemberWithName('mValue')
   hasval = valobj.GetChildMemberWithName('hasValue')
   if hasval.GetValueAsUnsigned(0) == 0:
     return '<none>'
   else:
     return mval.GetSummary()
   DONE

处理 std::string 是一个真正的问题,但您可以在 上找到一些潜在的解决方案。