在lldb上防止"执行被中断,原因:内部ObjC异常断点(-3)"

ste*_*ete 20 objective-c lldb

我编写了一些代码,将类的所有ivars转储到Objective C中的字典中.这用于valueForKey:从类中获取数据.有时候,KVC会抛出一个也能正确捕获的内部异常 - 但这会破坏lldb的功能,而我得到的只是:

错误:执行被中断,原因:内部ObjC异常断点(-3)..进程已返回到表达式求值之前的状态.

没有设置断点.我甚至尝试使用-itrue -ufalse表达式选项,但它没有任何区别.这完全打败了我想要使用lldb的东西,它似乎是一个很小的问题.如果在调用方法时有内部的,捕获的ObjC异常,我怎么能把clang简单地忽略

我在Xcode中尝试了这一点,直接通过从终端调用clang并连接到远程调试服务器 - 没有区别.

小智 21

我遇到了同样的问题.我的解决方案是包围try/catch它(我只使用此代码进行调试).请参阅:DALIntrospection.m第#848行

NSDictionary *DALPropertyNamesAndValuesMemoryAddressesForObject(NSObject *instance)
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在运行iOS 7,私有实例方法_ivarDescription将为您打印所有ivars(类似的实例方法是_methodDescription_shortMethodDescription).

  • try/catch并没有解决我原来的问题 - 你只是通过获取值来解决它,如果它是一个对象.但我会接受答案,因为这些新的iOS 7助手简直非常有用,可以解决我的问题.谢谢! (4认同)