Как я могу проверить сборку в Xcode 4? - PullRequest
18 голосов
/ 25 марта 2011

Я настраиваю некоторый код, который работает в тесном цикле в моем приложении для iPhone, и мне любопытно увидеть сгенерированный ассемблерный код, чтобы увидеть, не выглядит ли что-нибудь необычное.x, в меню была опция Build> Show Assembly Code , но я ничего не вижу в меню или документации Xcode 4.

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

Ответы [ 7 ]

20 голосов
/ 25 марта 2011

Насколько я могу судить, опция "Просмотр разборки" пропала.

Вот один из способов ее решения:

  1. Создайте свой проект
  2. Откройте сборкувойдите в систему и используйте окно поиска, чтобы найти команду компиляции, которая использовалась для создания интересующего вас исходного файла. Скопируйте всю команду сборки.
  3. Откройте окно терминала и перейдите в каталог вашего проекта.
  4. Вставьте команду сборки из журнала сборки в терминал и добавьте -save-temps.Нажмите enter.
  5. Теперь у вас есть два новых файла, yourFile.i и yourFile.s, которые являются предварительно обработанным исходным кодом и сгенерированной сборкой, соответственно, построенными в точности так, как они есть в вашем проекте.

В качестве альтернативы, вы можете разобрать встроенный двоичный файл (или объектный файл, полученный из вашего исходного файла), используя otool -tvV /path/to/binaryOrDotOFile.

Наконец, если это функция, которую вы хотели бы вернуть, убедитесь, чтоподать отчет об ошибке!

Редактировать: Эта функция вернулась в Xcode 4.1.На панели редактора помощника выберите «Сгенерированный вывод -> Ваше имя файла (сборка)».Boom!

16 голосов
/ 22 апреля 2012

Вы можете собрать сборку, перейдя в Product-> Generate Output-> Assembly File. Надеюсь, это то, что вы ищете.

Примечание: они изменили это снова в Xcode 5. Ответ выше делает вещь теперь

11 голосов
/ 23 января 2014

В Xcode 5.0.2 вы можете выбрать Продукт → Выполнить действие → «Собрать MyController.m»

N.B. Хотя этот вопрос относится к Xcode 4, он имеет высокие результаты в Google.

4 голосов
/ 17 июня 2011

Для таких ленивых, как я, приведенное выше предложение Стивена Кэнона использовать флаг -save-temps может быть выполнено даже с меньшими затратами труда: перейдите в настройки проекта -> фазы сборки -> источники компиляции и обратите внимание на столбец «Флаги компилятора».Добавьте -save-temps к любому файлу, который вам нужен, и файлы .ii и .s окажутся в каталоге проекта.

Возможно, лучшим решением было бы создание пользовательского правила с чем-то вроде«-Wa, -alh» и перенаправление оболочки «> myFile.s», но я не вижу, как легко продублировать правило сборки по умолчанию для модификации.

Как в мире «просматривать сборку»удалить из XCode 4?!?!

3 голосов
/ 25 мая 2011

Попробуйте нажать Ctrl + F7 один или несколько раз, и вы увидите код сборки.

3 голосов
/ 25 марта 2011

Согласно этому тщательному обзору Xcode 4, эта функциональность была удалена из Xcode 4. Вам нужно будет подать сообщение об ошибке / rdar, если вы хотите попытаться вернуть его.

Еще один полезный быстрый взгляд на функции Xcode 4 того же автора: http://pilky.me/view/16

2 голосов
/ 25 февраля 2014

Запустите в отладчике и прервите выполнение, и вы можете ввести «disass» в отладчик. По умолчанию она разбирает текущую функцию, поэтому обычно быстрее всего поставить точку останова в функции, которую вы хотите увидеть. В LLDB «disass -h» покажет другие опции, например, дизассемблирование именованной функции (не уверен, работает ли это для селекторов ObjC).

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

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