LLDB:使用指向内存中对象的指针显示所有对象

Jes*_*nch 14 debugging objective-c lldb

所以,在断点处,我有一个随机对象实例.我想弄清楚哪些对象有一个指向这个对象的指针.有没有办法在调试器控制台中看到这个?也许某些东西向我展示了对象上有保留的所有对象?

示例:我有一个NSViewController实例,我想看到包含此​​视图控制器实例的指针的所有其他对象.这将是有用的,因为它将允许我看到封装我的实例的视图控制器层次结构.

只是一个疯狂的想法我有时会真的有所帮助.

Gre*_*ker 30

在lldb中,用于command script import lldb.macosx.heap安装一些内存搜索功能.ptr_refs命令应该能够做你想要的; 使用ptr_refs --help以了解详情.

  • `ptr_refs`是要走的路.如果使用`MallocStackLogging = 1`环境变量启动应用程序,则可以执行`ptr_refs --stack ADDRESS`,并且不仅可以查看包含该地址的所有内存块,还可以查看分配或释放该对象/内存块时的回溯.请注意,`ptr_refs`仅适用于Mac OS X应用程序 - 它在Xcode 4.6中的实现方式使其无法在iOS上运行. (2认同)
  • 使用Xcode 6.3,我在设备(iOS 7.1.2)和模拟器(iOS 8.3)上运行的iOS应用程序中成功使用了`ptr_refs`,因此它看起来不再局限于Mac OS X. (2认同)