如何检查Xcode 4中的汇编?

时间:2011-03-25 14:40:05

标签: objective-c xcode gcc assembly xcode4

我正在调整一些在我的iPhone应用程序中以紧密循环运行的代码,我很想看到生成的汇编代码,看看是否有任何不寻常的东西。

在Xcode 3.x中,有一个 Build>在菜单中显示汇编代码选项,但我在Xcode 4的菜单或文档中看不到任何内容。

任何人都知道如何做到这一点?我可以做“gcc -S”,但我的理解是,这与整个项目的编译方式不同。

7 个答案:

答案 0 :(得分:20)

据我所知,“查看反汇编”选项已经消失。

这是一个解决方法:

  1. 构建项目
  2. 打开构建日志,并使用搜索窗口查找用于构建您感兴趣的源文件的编译命令。复制整个构建命令。
  3. 打开终端窗口,然后cd到项目目录。
  4. 将构建日志中的构建命令粘贴到终端中,并附加-save-temps。点击进入。
  5. 您现在有两个新文件yourFile.iyourFile.s,它们分别是预处理源和生成的程序集,与项目中的完全相同。
  6. 或者,您可以使用otool -tvV /path/to/binaryOrDotOFile反汇编构建的二进制文件(或源文件生成的目标文件)。

    最后,如果这是您想要的功能,请确保提交错误报告!

    修改 此功能返回Xcode 4.1。在助理编辑器窗格中,选择“生成的输出 - > YourFilename(程序集)”。吊杆!

答案 1 :(得分:16)

您可以通过转到Product-> Generate Output-> Assembly File来构建Assembly。 希望这是你正在寻找的。

注意:他们在Xcode 5中再次更改了它。上面的答案正在做的事情

答案 2 :(得分:11)

在Xcode 5.0.2中,您可以选择产品→执行操作→“组装MyController.m”

N.B。 虽然这个问题涉及Xcode 4,但它在谷歌上的结果很高。

答案 3 :(得分:4)

对于像我这样的懒人,Stephen Canon上面建议使用-save-temps标志可以用更少的工作来完成:转到项目设置 - >构建阶段 - >编译源代码并注意“编译器标志”列。将-save-temps添加到需要反汇编的文件中,.ii和.s文件最终会出现在项目目录中。

可能更好的解决方案是制作一个自定义规则,例如“-Wa,-alh”和shell重定向“> myFile.s”,但我不知道如何轻松复制默认构建规则修改。

世界上如何从“XCode 4”中删除“查看程序集”?!?!

答案 4 :(得分:3)

根据Xcode 4的this thorough review,此功能已从Xcode 4中删除。如果您想尝试将其恢复,则需要提交bug / rdar。

同一作者对Xcode 4功能的另一个有用的快速浏览:http://pilky.me/view/16

答案 5 :(得分:3)

尝试按Ctrl + F7一次或多次,您将看到汇编代码。

答案 6 :(得分:2)

在调试器中运行并中断执行,您可以在调试器中键入“disass”。默认情况下,它会反汇编当前函数,因此在您想要查看的函数中放置断点通常最快。在LLDB中,“disass -h”将显示其他选项,例如反汇编命名函数(不确定这是否适用于ObjC选择器)。

比手动重建源文件容易得多,至少......