我希望能够让调试器在达到特定字符串匹配时中断。举个例子,我可能有这样的事情:
Foo myObj = [self gimmeObj];
myObj
可能有一个名为name
。我希望调试器在分配时停止
[myObj.name isEqualToString:@"Bar"];
如何在 Xcode 中设置条件断点来做到这一点?
您可以在 Xcode 中通过正常设置断点来设置条件断点,然后按住 Control 键单击它并选择“编辑断点”(选择“运行”->“显示”->“断点”)。
在断点条目中,有一个条件列。
现在,对于这种情况有几个问题需要记住。首先,gdb 不理解点语法,因此必须使用 [myObj name](除非 name 是 ivar)而不是 myObj.name。
接下来,与 gdb 中的大多数表达式一样,您必须告诉它返回结果的类型,即“BOOL”。所以设置一个条件,例如:
(BOOL)[[myObj name] isEqualToString:@"Bar"]
通常,通过临时添加代码来在代码中执行此操作实际上更容易,例如:
if ( [myObj.name isEqualToString:@"Bar"] ) {
NSLog( @"here" );
}
然后在 NSLog 上设置断点。那么你的条件可以任意复杂,而不必担心 gdb 可以解析什么和不能解析什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)