lldb 类型摘要提供程序 - SBProcess 无效

lldb type summary provider - SBProcess is invalid

我在 Ubuntu 16.04 上用 16 位 wchar 为 wstring 写了一个 lldb 类型的摘要提供程序。

如果我在 lldb 中手动执行以下操作,一切正常:

(lldb) script import mytypes
(lldb) type summary add -F mytypes.wstring_SummaryProvider "std::__1::wstring"

我试图通过将以下内容添加到 .lldbinit 来简化自动加载:

script import mytypes
type summary add -F mytypes.wstring_SummaryProvider "std::__1::wstring"

然后我在打印 wstring 变量时失败 "SBProcess is invalid"。

我的类型摘要函数有以下内容,我相信这是遇到错误的地方:

content = lldb.process.ReadMemory(bufferAddr, byteCount, error)

可能是因为在自动加载时添加类型摘要时"process"还没有赋值?

有人知道如何让我的脚本自动加载吗?

非常感谢

Enrico 已经在 lldb-dev 上回答了这个问题:

http://lists.llvm.org/pipermail/lldb-dev/2016-September/011236.html

但对于跟随这里的人:

lldb.processlldb.thread 等变量只是为了方便在交互式 python 解释器中使用,而不是为了 Python 获取 运行 用于断点、数据格式化程序、命令等。

在多线程调试器中尝试将 "current thread" 的全局概念呈现给可能获得 运行 的任何脚本代码位是没有意义的。相反,脚本获得 运行 的每个上下文都知道与其相关的 process/thread/frame。在数据格式化程序的情况下,他们总是通过他们正在处理的值,并且通过 SBValue.GetProcess() API.

知道相关过程