2016-06-14 2 views
12

Я перенес проект из предыдущей версии Xcode в Xcode 8. Я хочу использовать новый отладчик визуальной памяти. Он доступен в новых проектах, но полностью отсутствует в моем импортированном. Почему это?Как включить Visual Debugger в Xcode 8?

+0

Думаю, вам следует обновить свой проект, рекомендованный настройками Xcode 8. –

+0

Вы видите какие-либо желтые треугольники (предупреждения), требующие обновления? –

+0

Я просто нажал на них, но проблема не устранена. – PopKernel

ответ

12

Оказывается, что Swift 3 необходим для визуального отладчика памяти для работы.

Мое приложение, перенесенное в Swift 2.3, не работало, когда я попытался перевести его на Swift 3.0, он работал мгновенно.

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

+5

Подтверждено в примечаниях к выпуску [Xcode 8.0 beta release] (http://adcdownload.apple.com/WWDC_2016/Xcode_8_beta/Release_Notes_for_Xcode_8_beta.pdf): «Обратите внимание, что несколько новых функций в Xcode 8 не поддерживаются для проектов, в которых используется Swift 2.3. К ним относятся: • Отладка графа памяти • Адрес Sanitizer • Дезинфицирующее средство потока • Генерация кода времени построения сердечника Для использования этих функций должен мигрировать ваш код Swift в Swift 3. (26003920) « – zpasternack

+0

Мой проект с использованием swift 2.3 действительно работает. – Brynjar

0

Я только что запустил проект Objective-C iOS 7, выполненный с Xcode 7 в Xcode 8 (без миграции), а значок Visual Debugger в нижней части Xcode появится в области отладки рядом с кнопкой «Инициализация отладки».

Visual memory Debugger

Это кнопка с тремя кругами.

Из других комментариев, похоже, для использования этой функции может потребоваться Swift 3.

+0

Этого нет. Может быть, это как-то связано с тем, что мой проект является приложением для Mac? – PopKernel

+0

Хм, может быть. Какую версию OS X вы планировали раньше, и какая версия Xcode была создана с помощью проекта? – JAL

+1

Подождите, как насчет «санитарии во время работы»? он переключается на схему новых проектов, но не в моей. Он серовато, говоря «требует перекомпиляции». – PopKernel

7

Кажется, что проекту требуется Swift 3 для включения адреса & Фильтр нитей (который является отладчиком памяти).

address sanitizer thread sanitizer

Для меня это относится и к прошивке & OS X/MacOS приложений. Оба написаны в Swift 2.2 &, преобразованные в 2.3.

Примечание: Я тестировал это только на OS X El Capitan 10.11.5.

@gabriellanata подтверждает, что он работает, когда код преобразуется в Swift 3.

+1

Отладчик памяти несовместим с дезинфицирующим средством для потока. Вы не можете запускать оба одновременно. – tzm41

+0

Полезно знать, что он доступен только для быстрого 3 ... –

0
Argument '-sanitize=address' is not supported on the Swift 2.3 toolchain. 
You will need to migrate your project to Swift 3 to use this feature. 

Xcode 8 GM построить ошибки

P.S. Objective-c, поддерживаемый Visual Debugger Visual

0

Если вы нажмете на «Память», панель редактора источника изменится, чтобы отобразить некоторую информацию о памяти, в том числе о том, почему она отключена. В моем случае это было связано с тем, что в схеме были включены объекты зомби. (Xcode 8.3.2)