Как проверить сборку в Xcode 4?
Я настраиваю код, который работает в жестком цикле в моем приложении для iPhone, и мне любопытно увидеть сгенерированный код сборки, чтобы увидеть, что-то выглядит обычным.
В Xcode 3.x в меню была опция Build > Show Assembly Code, но я ничего не вижу в меню или документации для Xcode 4.
Кто-нибудь знает, как это сделать? Я мог бы сделать "gcc -S", но я понимаю, что это не будет идентично тому, как скомпилирован весь проект.
Ответы
Ответ 1
Как я могу сказать, опция "Открыть дизассемблирование" исчезла.
Здесь один способ:
- Создайте свой проект
- Откройте журнал сборки и используйте окно поиска, чтобы найти команду компиляции, которая была использована для создания исходного файла, который вам интересен. Скопируйте всю команду сборки.
- Откройте окно терминала и cd в каталог проекта.
- Вставьте команду build из журнала сборки в терминал и добавьте
-save-temps
. Нажмите Enter.
- Теперь у вас есть два новых файла:
yourFile.i
и yourFile.s
, которые являются предварительно обработанным источником и сгенерированной сборкой, соответственно, построены точно так же, как и в вашем проекте.
В качестве альтернативы вы можете дизассемблировать встроенный двоичный файл (или файл объекта, полученный в исходном файле), используя otool -tvV /path/to/binaryOrDotOFile
.
Наконец, если это функция, которую вы хотели бы вернуть, обязательно зарегистрируйте отчет об ошибке!
Edit:
Эта функция вернулась в Xcode 4.1. В области помощника редактора выберите "Generated Output → YourFilename (Assembly)". Boom!
Ответ 2
Вы можете создать сборку, перейдя в Product- > Generate Output- > Assembly File.
Надеюсь, это то, что вы ищете.
Примечание: они снова изменили его в Xcode 5. Вышеприведенный ответ делает сейчас вещь
Ответ 3
В Xcode 5.0.2 вы можете выбрать Продукт → Выполнить действие → "Собрать MyController.m"
N.B.
Хотя этот вопрос относится к Xcode 4, он очень высоко оценивает результаты в google.
Ответ 4
Для ленивых людей, подобных мне, предложение Стивена Канона выше использовать флаг -save-temps можно выполнить с еще меньшей работой: перейдите к настройкам проекта → фазам сборки → скомпилируйте источники и обратите внимание на столбец "Компиляторы". Добавьте -save-temps в любой файл, который вам нужен для разборки, а файлы .ii и .s будут попадать в каталог проекта.
Вероятно, лучшим решением было бы создать собственное правило с чем-то вроде "-Wa, -alh" и переадресацией оболочки " > myFile.s", но я не вижу, как легко дублировать правило построения по умолчанию для модификация.
Как в мире "просмотреть сборку" удалили из XCode 4?!?!
Ответ 5
В соответствии с этот тщательный обзор Xcode 4, эта функциональность была удалена из Xcode 4. Вам нужно будет указать ошибку /rdar если вы хотите попробовать и вернуть его.
Еще один полезный быстрый взгляд на функции Xcode 4 того же автора: http://pilky.me/view/16
Ответ 6
Попробуйте нажать Ctrl + F7 один или несколько раз, и вы увидите код сборки.
Ответ 7
Запустите в отладчике и прекратите выполнение, и вы можете ввести "disass" в отладчик. По умолчанию он будет разбирать текущую функцию, поэтому обычно проще всего поставить точку останова в функции, которую вы хотите видеть. В LLDB "disass -h" покажет другие параметры, такие как дизассемблирование именованной функции (не уверен, что это работает для селекторов ObjC).
Намного проще, чем восстановить исходные файлы вручную, по крайней мере...