如何在Xcode 4中查看汇编代码?

18

我正在调整我的iPhone应用程序中运行的紧密循环代码,并且好奇地想查看生成的汇编代码,以查看是否有任何异常。

在 Xcode 3.x 中,菜单中有一个 "Build > Show Assembly Code"(构建>显示汇编代码)选项,但我在 Xcode 4 的菜单或文档中没有找到任何东西。

有人知道如何做到这一点吗?我可以执行 "gcc -S",但我的理解是那不会与整个项目的编译完全相同。


3
在更新的版本中,助手编辑器包含相应的视图:预处理、汇编和反汇编。 - jmihalicza
在删除核心功能而没有替代品方面,没有人能像苹果一样。 - Glenn Maynard
7个回答

20
据我所知,“查看反汇编”选项已经消失了。
以下是一个解决方法:
  1. 构建您的项目
  2. 打开构建日志,并使用搜索窗口查找用于构建您感兴趣的源文件的编译命令。复制整个构建命令。
  3. 打开终端窗口,然后cd到您的项目目录。
  4. 将构建日志中的构建命令粘贴到终端中,并附加 -save-temps。按回车键。
  5. 现在您有了两个新文件,yourFile.iyourFile.s,它们分别是预处理的源代码和生成的汇编代码,完全按照您的项目构建。
另外,您还可以使用 otool -tvV /path/to/binaryOrDotOFile 来反汇编构建后的二进制文件(或源文件生成的目标文件)。
最后,如果这是您想要重新获得的功能,请确保提交一个错误报告! 编辑:Xcode 4.1 中已经恢复了此功能。在助手编辑器窗格中,选择“生成的输出 -> 您的文件名(汇编)”。完成!


16
你可以通过进入产品->生成输出->汇编文件来构建汇编文件。 希望这正是你所寻找的。
注意:在Xcode 5中,他们再次更改了此功能。上述答案现在正在执行该操作。

11
在Xcode 5.0.2中,您可以选择 Product → Perform Action → "Assemble MyController.m"
注:虽然此问题涉及Xcode 4,但在Google搜索结果中排名较高。

4
对于像我这样懒惰的人,可以采用Stephen Canon上面提到的使用-save-temps标志的建议,甚至可以更少地工作:转到项目设置->构建阶段->编译源并注意“编译器标志”列。将-save-temps添加到需要反汇编的任何文件中,.ii和.s文件将出现在项目目录中。
也许更好的解决方案是使用类似“-Wa,-alh”和shell重定向“> myFile.s”的自定义规则,但我不知道如何轻松地复制默认构建规则进行修改。
XCode 4怎么会删除“查看汇编”功能???

3

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


3
根据对Xcode 4的全面评估,该功能已从Xcode 4中删除。如果您想尝试恢复它,您需要提交错误/ rdar。

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


2

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

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


我相信可以通过以下方式访问帮助:help disass - Matt Bierner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接