使用仪器工具定位泄漏

Using instruments tool to locate leaks

我正在尝试使用泄漏工具查找我的应用程序中的泄漏。 当应用程序启动时,我可以看到 106 个漏洞,但我很难找到它们。

在图像中您可以看到列表的一部分,但我如何才能深入到 class 或产生泄漏的代码行?

您可以在屏幕右侧看到堆栈三角形。然后滚动到 class 和造成泄漏的方法。有时很难理解为什么会漏气。

看看我的头像

我有 TermsViewController 和 NSMuttableAttributed 字符串,它会造成内存泄漏。另外,如果我 select 带有 TermsViewController.setupInfoText() 的行,它会打开代码。

找漏洞没那么简单。你需要戴上侦探帽,从外套里拿出放大镜,开始寻找踪迹。即

对于每个泄露的对象,都有一个负责的库。如果它是 UIKit、Foundation 或任何低级别的,您将无法查明导致泄漏的代码位置,因为这些库采用二进制文件的形式。

如果负责的库是您正在编写的库,那么您可以通过单击右侧堆栈跟踪面板中的正确方法来转到代码。一个提示是,如果有相应的代码可用,则堆栈跟踪面板中列出的方法会突出显示。

但是,由于它不是那么简单,通常您自己的代码会导致一些内部库泄漏,这很难调试。在开始之前,您需要阅读一些教程并练习 material。在 Whosebug 上肯定无法回答某些问题。

如果要查找分配泄漏内存的代码,请使用跳转栏切换到调用树视图。要在调用树视图中查找您的代码,请反转调用树视图并隐藏系统库。

在调用树视图中双击您的函数之一将让您深入到分配泄漏内存的代码行。

阅读以下文章以获取有关使用 Instruments 查找内存泄漏的更多详细信息:

Measuring Your App's Memory Usage with Instruments