Cocoa开发中的异常、信号、错误与调试
在Cocoa开发中,我们常常会遇到各种异常和错误。了解如何处理这些问题,对于提高程序的稳定性和可靠性至关重要。下面将详细介绍一些常见的异常类型及其解决方法。
1. Xcode调试界面介绍
在Xcode的调试界面中,有几个关键区域:
- 左中部:显示所有可用的变量和寄存器值,能让我们立即看到一些简单的值。
- 右上:显示所选栈帧的源代码或编译后的汇编代码。
- 底部视图:是gdb控制台界面,我们既可以查看程序的输出(如通过NSLog生成的),也可以在gdb提示处输入命令。若看不到底部视图,可从菜单中选择“Run - Console”使其显示。
2. 捕获异常信息
当程序在抛出异常的函数起始处暂停时,我们可以通过以下方法查看异常信息:
在Mac OS X(英特尔硬件)编译的代码中,函数的第一个参数至少在函数开始时会存于名为eax的寄存器中,在gdb里可通过特殊变量$eax访问。objc_exception_throw函数的第一个参数就是异常实例本身。在gdb提示处输入“po $eax”,就能以可读格式打印对象的值。例如:
(gdb) po $eax
*** -[NSCFNumber length]: unrecognized selector sent to instance 0x1092e0
还可以进一步使用gdb的实时Objective - C方法执行功能,获取更多异常信息:
(gdb) po [$eax name]
NSInvalidArgumentException