Mer*_*erk 11 breakpoints objective-c assertions continuation
我已经成功地使用目标C中的标准NSAssert(condition_which_should_evaluate_true,@"错误消息")语句,并在断点导航器中添加"所有异常"断点,以编程方式指定条件时,使我的调试版本停止执行.
好又好,但是大多数时候我在调试时,我还希望在那之后继续正常的程序执行.在断言失败后继续执行该程序有助于追踪混淆/错误的来源.至少就我记得在不同平台上编程时的情况而言.
在Objective C开发中是否有标准的方法可以做到这一点?
rob*_*off 14
有一种方法.它不是Objective-C的东西,它是Unix的东西.
kill(getpid(), SIGSTOP);
Run Code Online (Sandbox Code Playgroud)
或者干脆:
raise(SIGSTOP);
Run Code Online (Sandbox Code Playgroud)
这将破坏__kill函数中的调试器.然后,您需要沿着一两帧堆栈来查看调用的帧kill.您可以使用debugger的continue命令继续执行.
请注意,如果您没有在调试器下运行并执行此操作,那么您的应用就会挂起.请参阅技术问答QA1631:检测调试器.您可以使用该信息编写仅SIGSTOP在调试器下运行时发送的包装函数或宏.
此外,Foundation框架提供了一个不同的断言宏,可用于常规函数.是的NSCAssert.
| 归档时间: |
|
| 查看次数: |
7372 次 |
| 最近记录: |