在Xcode9中调试iOS应用程序时,如何在lldb中转换指向已知Swift对象类型的指针?
我试图在Swift中打印一个对象的描述,给出它在Xcode9/ iOS 11SDK中的内存地址。我一直在使用这里描述的技术:LLDB (Swift): Casting Raw Address into Usable Type (注意:这种技术在调试macOS应用程序时效果很好。)
(lldb) p unsafeBitCast(0x00006080000e2280, to: UIViewController.self)
但是,在调试iOS应用程序时,在Xcode9中的lldb中键入类似的语句会产生以下错误消息:
error: use of undeclared identifier 'to'。或者去掉"to:“部分:
error: use of undeclared identifier 'unsafeBitCast'。
我搜索了替换Swift unsafeBitCast()方法的文档,但我没有找到任何关于它已被弃用的内容。这是lldb / Swift iOS运行时的错误吗?
故障: Xcode 9+ iOS 11模拟器、Xcode 9+ iOS 9.x模拟器、Xcode 9+ iOS 9.x设备
工作: Xcode 8+ iOS模拟器/设备、Xcode 9+ macOS 10.12应用程序
感谢你的见解。
发布于 2017-09-15 04:50:18
您可以从内存地址创建指针,并使用UnsafeMutablePointer pointee属性检索对象:
let object = UnsafeMutablePointer<NSTabViewController>(bitPattern: yourMemoryAddress)?.pointeehttps://stackoverflow.com/questions/46227486
复制相似问题