繁体   English   中英

lldb 脚本:如何从文字地址获取 lldb.SBValue

[英]lldb script: How to get lldb.SBValue from literal address

给定一个 memory 地址,我想从 lldb 脚本打印它的内容。

我尝试了不同的方法来获取给定地址的 SBValue,但它们都不适合我,即

buffer = lldb.SBData()
buffer.CreateDataFromCString(lldb.eByteOrderBig, 10, "0x00007fffe45e3000")

但是当我 go 查询 object 时没有显示。

我还尝试将地址分配给lldb中的便利变量,然后使用FindVariable(),但该变量为空

expr auto $buffer =  function_returning_address();
>>> buffer = lldb.frame.FindVariable("$buffer")

但是这里的变量又没有名称、类型等。我也尝试使用 SBValue.SetValueFromCString()

>>> buffer.SetValueFromCString("0x00007fffe45e3000", error)
False
>>> print error
error: Could not get value: No value

我在 Google 上没有找到太多文档,而且我刚开始使用 lldb 脚本,欢迎提出任何建议。

谢谢。

有两种方法可以做到这一点。 如果您想要原始数据,您可以要求您的 SBProcess 使用 SBProcess.ReadMemory 将 memory 作为 Python 字节数组读取。 如果您想将该地址处的数据显示为某种类型的实例,您可以使用 SBTarget.CreateValueFromAddress。 要找到传递给它的类型,请使用 SBTarget.FindFirstType...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM