如何在断点处查看Objective-C代码(汇编代码等效部分)?

3

如何在断点处查看XCode(汇编代码等效)?

我已经进入Thread1,它显示了[ViewController viewDidLoad]的Objective-C,然后是[UIViewController view]和[UIWindow makeKeyAndVisible]的汇编。 我希望能够看到[ViewController viewDidLoad]的汇编,并且在断点处看到标记。

(Product-> GenerateOutput-> Generate Assembly File:不显示断点。)

谢谢

void addme(int *a)
{
    *a += 0xFF;// <-- I want to see the assembly for this:  should see an instruction "ADD" in the assembly break down
    *a += 1;
    *a += 2;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    int a = 12;
    addme(&a);
}    

如果您无法在任何汇编调试器中找到所需的确切位置,则可以在那里放置易于查找的随机代码。如果您无法使用调试器找到所需的位置,我不明白您为什么要这样做?也许我没有理解您的意图。 - loler
你使用什么来查看汇编代码? - loler
我添加了那段代码,我想查看它的汇编。 - jdl
停在您的断点处,然后在 gdb 中输入:disass *$pc - nielsbot
3个回答

2
步骤:
  1. 在想要查看汇编代码的位置设置断点
  2. 运行程序
  3. 一旦程序暂停,请点击看起来像“->|”(但向下指向)的按钮
  4. 重复步骤3很多次
  5. 跳舞
  6. 看世界
  7. 感受生活的乐趣
  8. 弹出瓶盖
  9. 变老
  10. 死亡
我不确定这是否是您所要求的,但我刚刚完成了它(步骤1-5和8),并且对我有效。
它位于屏幕底部,在控制台上方。

你建议的键在哪里?是关于 [enter] 键的吗?我需要按住 [command] 键吗?谢谢。 - jdl
我对汇编一无所知,所以我不太清楚我在看什么。你可能想和@loler交流一下。 - Dustin
我刚才看了一下,也许如果你把它放在调用viewDidLoad的东西里面,然后逐步执行代码,直到你遇到这个调用,你就会看到它。再次强调,我不知道它长什么样。 - Dustin

1

而且很可能你根本看不到汇编ADD指令,因为编译时常量会在编译时由编译器计算并优化掉。


我移除了常量并将代码放入一个函数中。已在上方发布了代码。 - jdl

0

@jdl 事实上,我不懂Objective-C,@Dustin也不懂汇编语言... 据我所知,当某个对象被加载时,viewDidLoad函数将在其中执行代码。我认为,您可以只编译您在问题中包含的那部分代码,并通过Mac OS上的IDA pro或其他调试器查看汇编代码。


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