gpt4 book ai didi

python - 给定一个对象的地址,我如何在 LLDB Python 脚本中调用它的 Obj-C 方法?

转载 作者:行者123 更新时间:2023-11-30 23:30:54 24 4
gpt4 key购买 nike

在伪代码中,我想创建一个可重用的 LLDB Python 脚本,其工作方式如下:

get_super_class(int address) {
return ((id)address).getSuperClass();
}

这样调用:

(lldb) get_super_class(0x123abc)
UIViewController

有什么想法吗?我是一个Python新手。我认为文档中有 SBValue 的内容这会让我接近我想要的,但如果有的话我看不到。

最佳答案

我不在电脑前(实际上是在里诺的一家餐厅:),所以接下来的内容大部分是粗略的,但它应该为您指明正确的方向

您想要做的是将表达式组成一个字符串。假设您正在寻找 foo(X) ,其中 foo 定义为

id foo(id arg)

你能做的就是让自己成为一个字符串

“(id)foo((id)0xaddr”

然后您想将其作为表达式进行计算。

我相信 SBTarget 或 SBFrame 有一个评估表达式方法为此,您传递精心设计的字符串,并记住启用动态类型,因为您正在处理 ObjC 并且很可能希望它们得到解析。

该 API 将返回另一个 SBValue。您可以查询值、摘要、描述,或者您可以获取其子值等。

希望这有帮助。如果您需要更多详细信息,请随时询问,我会在有机会时尽力填补空白!

关于python - 给定一个对象的地址,我如何在 LLDB Python 脚本中调用它的 Obj-C 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com