【问题标题】:Does Instruments work the same with Objective-C++?Instruments 是否与 Objective-C++ 一样工作?
【发布时间】:2012-07-18 21:43:05
【问题描述】:

我正在分析一个 Objective C++ 程序,在负责的调用者中,它没有显示创建对象的确切方法,也没有显示释放点,它只显示“CA::Display::DisplayLink::dispatch(unsigned long long, unsigned长长)” am profiling 程序是一个使用 cocos2d 的游戏,大多数类都是 C++ .mm。我知道 xcode 不完全支持 Obj-C++ 这就是仪器没有显示足够信息的原因吗??

PS 我使用的是 Xcode 4.3

【问题讨论】:

    标签: objective-c xcode memory instruments memory-leaks


    【解决方案1】:

    如果对象本身是 C++,请使用分配工具,单击“i”并尝试将配置调整为“识别 C++ 对象”。如果您使用 Leaks,我建议您改用 Allocations 和 Heapshot analysis。在大多数情况下,我发现它比 Leaks 工具强大得多。

    也就是说,dispatch() 方法可能会掩盖信息,这可能与 C++ 无关;在深入到 dispatch() 时,它可能只是对 Instruments 的限制。有时会发生这种情况。

    所有都说,ObjC++ 不是一种在整个项目中传播的好语言。用纯 C++ 编写你的低级代码。用纯 ObjC 编写您的高级代码。使用 ObjC++ 的薄胶层将它们绑在一起。与纯 C++ 或纯 ObjC 相比,ObjC++ 存在许多问题,从较差的工具支持到运行时性能问题。是胶水;这不是实质。

    【讨论】:

    • 感谢您的回答,Obj-C++ 的全部需求是支持 Box2d,我认为转向纯 Obj-C 设计为时已晚,我正在尝试调试/分析代码照原样,尽管这将是一个痛苦而缓慢的过程。
    • 你可能对这篇文章感兴趣:robnapier.net/blog/wrapping-cppfinal-edition-759
    • 这个 heapshot 分析很有帮助。
    【解决方案2】:

    最后我发现是什么让仪器无法显示实际的方法调用,不是 Obj C++,我最近更新了开发人员会员资格,我的 iPad 上似乎有 2 个应用程序副本,仪器每次都在分析旧的。天哪!

    【讨论】:

      猜你喜欢
      • 2018-11-10
      • 1970-01-01
      • 2011-06-07
      • 2017-06-02
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      相关资源
      最近更新 更多