我不确定这项技术是否有名称,但我记得很久以前在C ++中做过这样的事情。我想断点并观察我的程序中有数百个特定对象。如果你能告诉编译器使用一个保留的内存空间以便我可以运行一次,拉出一个内存地址,然后再次运行,让对象分配到内存中的同一地址,这样会很好可以看到下一次这个特定对象会发生什么。
目前我只是分配一个'调试ID',它随着每次分配而增加,但认为可能有更简洁的方法。我确信在使用Vis Studio / C ++之前我已经完成了这个......
答案 0 :(得分:2)
您可以在Xcode中设置一个条件断点,这样只有在满足某个条件时它才会进入调试器。
为此,请正常设置断点,然后右键单击它并选择编辑断点。
在“断点”窗口中找到断点,然后双击“条件”列。然后,您可以输入表达式,例如:
(BOOL)[[yourObject name] isEqualToString:@"foo"]
仅当name
的{{1}}属性为yourObject
时才会中断。
请注意,您需要将表达式的结果强制转换为布尔值,否则gdb不知道如何处理表达式的结果。您也不能使用点表示法语法,必须使用完整的方括号语法。