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.process
、lldb.thread
等变量只是为了方便在交互式 python 解释器中使用,而不是为了 Python 获取 运行 用于断点、数据格式化程序、命令等。
在多线程调试器中尝试将 "current thread" 的全局概念呈现给可能获得 运行 的任何脚本代码位是没有意义的。相反,脚本获得 运行 的每个上下文都知道与其相关的 process/thread/frame。在数据格式化程序的情况下,他们总是通过他们正在处理的值,并且通过 SBValue.GetProcess()
API.
知道相关过程
我在 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.process
、lldb.thread
等变量只是为了方便在交互式 python 解释器中使用,而不是为了 Python 获取 运行 用于断点、数据格式化程序、命令等。
在多线程调试器中尝试将 "current thread" 的全局概念呈现给可能获得 运行 的任何脚本代码位是没有意义的。相反,脚本获得 运行 的每个上下文都知道与其相关的 process/thread/frame。在数据格式化程序的情况下,他们总是通过他们正在处理的值,并且通过 SBValue.GetProcess()
API.