![](/img/trans.png)
[英]Dereferencing a SBValue which is of type void * in lldb Python script
[英]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.