代码之家  ›  专栏  ›  技术社区  ›  Sam

obj-c在下次调试时保持内存地址不变

  •  0
  • Sam  · 技术社区  · 16 年前

    我不确定这个技术是否有名字,但是我记得很久以前在C++中做过这样的事情。我想断点和观察一个特定的对象,其中有数百在我的程序。如果你能告诉编译器使用一个保留的内存空间,这样我就可以运行一次,取出一个内存地址,然后再次运行,并保证将对象分配到内存中的同一地址,这样我就可以看到下次这个特定对象会发生什么。

    目前,我只是分配了一个“调试id”,这个id随着每次分配而递增,但我想可能有一种更干净的方法来完成它。我确信我以前做过VISStudio/C++…

    1 回复  |  直到 16 年前
        1
  •  2
  •   Rob Keniger    16 年前

    您可以在xcode中设置一个条件断点,以便它只有在满足某个条件时才会进入调试器。

    为此,请正常设置断点,然后右键单击它并选择 编辑断点 .

    在“断点”窗口中找到断点,然后双击“条件”列。然后可以输入表达式,如下所示:

    (BOOL)[[yourObject name] isEqualToString:@"foo"]
    

    只有当 name 性质 yourObject 是 foo .

    注意,您需要将表达式的结果转换为布尔值,否则gdb不知道如何处理表达式的结果。也不能使用点表示法语法,必须使用全方括号语法。