Подтвердить что ты не робот

Как проверить сборку в Xcode 4?

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

В Xcode 3.x в меню была опция Build > Show Assembly Code, но я ничего не вижу в меню или документации для Xcode 4.

Кто-нибудь знает, как это сделать? Я мог бы сделать "gcc -S", но я понимаю, что это не будет идентично тому, как скомпилирован весь проект.

4b9b3361

Ответ 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).

Намного проще, чем восстановить исходные файлы вручную, по крайней мере...