IPHONE: анализ утечек с помощью приборов - PullRequest
2 голосов
/ 28 октября 2009

Я пытаюсь обнаружить утечки с помощью инструментов, но я вижу утечки, подобные тем, которые показаны на следующем рисунке:

Утечка

Как вы можете видеть, нет информации о том, какая именно строка кода имеет утечку. Все утечки, которые у меня есть, около 20, похожи на это, или, другими словами, утечки не показывают какую-либо строку моего кода в частности.

Утечка на этом рисунке связана с "_CFAllocatorSystem" (???) на CoreFoundation, и у меня есть другие, которые просто говорят GSEvent. Я понятия не имею, что это порождает.

Как я могу это обнаружить?

спасибо за любую помощь.

Ответы [ 4 ]

1 голос
/ 28 октября 2009

Я думаю, что вы хотите войти в инструменты после запуска под утечкой и выбрать «Source View». Затем вам нужно перетащить ваши исходные файлы в окно инструмента. Затем он покажет строки в коде, где происходит утечка, вместе со стеком вызовов.

Некоторые отбрасывают мой код, который пропускает вид. В инструментах это выглядит так: альтернативный текст http://img688.imageshack.us/img688/9669/screenshot20091028at131.png

1 голос
/ 28 октября 2009

То, что Leaks показывает вам, это трассировка кода, который выделил объект утечки (это означает, что он сохраняется, но в вашем приложении не осталось переменных с таким адресом). То, что он не показывает вам, это то, где объект должен был быть выпущен, чтобы не вызвать утечку, потому что это невозможно знать (можно найти, где в данный момент вызывается выпуск, но это может быть не очень полезно). 1001 *

Итак, этот след говорит мне о том, что некоторая часть памяти, выделенная системой, сохраняется вами, а затем ссылка забывается - один ключ - это строка "PurpleEvent", которая является обычной в потоке, имеющем события таймера или, возможно, уведомления. Возможно, вы получили уведомление и что-то скрыли от него, не отпуская его позже.

Если вы знаете, в какой момент происходит утечка, вы сможете определить, какой код выполняется в течение этого времени.

0 голосов
/ 28 октября 2009

Виноват был акселерометр и я компилирую для OS 3.0.

Другими словами, акселерометр, который Apple сказал, что его утечки были исправлены, все еще течет как ад.

0 голосов
/ 28 октября 2009

См. здесь и особенно эту цитату:

Этот список информирует вас о типах, размерах, адресах и даже их стеках вызовов.

Затем вы можете отследить источник просочившихся воспоминаний через стеки вызовов.

Трассировка стека показывает, какая именно линия является виновной. Видимо строка 14 в main.m в вашем случае. Не знаете, что вас смутило?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...